Implemented state
This commit is contained in:
@@ -1,8 +1,9 @@
|
|||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
|
|
||||||
use lyceris::auth::microsoft::MinecraftAccount;
|
use lyceris::auth::microsoft::MinecraftAccount;
|
||||||
|
use tauri::State;
|
||||||
|
|
||||||
use crate::{features::Feature, GameVersion};
|
use crate::{features::Feature, GameVersion, SharedState};
|
||||||
|
|
||||||
pub struct InstanceSync {}
|
pub struct InstanceSync {}
|
||||||
|
|
||||||
@@ -15,6 +16,7 @@ impl Default for InstanceSync {
|
|||||||
impl Feature for InstanceSync {
|
impl Feature for InstanceSync {
|
||||||
fn launch(
|
fn launch(
|
||||||
&mut self,
|
&mut self,
|
||||||
|
state: &State<'_, SharedState>,
|
||||||
version: &GameVersion,
|
version: &GameVersion,
|
||||||
account: &MinecraftAccount,
|
account: &MinecraftAccount,
|
||||||
) -> super::FeatureResult {
|
) -> super::FeatureResult {
|
||||||
@@ -25,6 +27,7 @@ impl Feature for InstanceSync {
|
|||||||
|
|
||||||
fn after_launch(
|
fn after_launch(
|
||||||
&mut self,
|
&mut self,
|
||||||
|
state: &State<'_, SharedState>,
|
||||||
version: &GameVersion,
|
version: &GameVersion,
|
||||||
account: &MinecraftAccount,
|
account: &MinecraftAccount,
|
||||||
) -> super::FeatureResult {
|
) -> super::FeatureResult {
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
use lyceris::auth::microsoft::MinecraftAccount;
|
use lyceris::auth::microsoft::MinecraftAccount;
|
||||||
|
use tauri::State;
|
||||||
use tokio::sync::Mutex;
|
use tokio::sync::Mutex;
|
||||||
|
|
||||||
use crate::{features::instance_sync::InstanceSync, GameVersion};
|
use crate::{features::instance_sync::InstanceSync, GameVersion, SharedState};
|
||||||
|
|
||||||
mod instance_sync;
|
mod instance_sync;
|
||||||
|
|
||||||
@@ -9,10 +10,20 @@ pub type FeatureResult = Result<(), String>;
|
|||||||
|
|
||||||
#[allow(unused_variables)]
|
#[allow(unused_variables)]
|
||||||
pub trait Feature: Send + Sync {
|
pub trait Feature: Send + Sync {
|
||||||
fn launch(&mut self, version: &GameVersion, account: &MinecraftAccount) -> FeatureResult {
|
fn launch(
|
||||||
|
&mut self,
|
||||||
|
state: &State<'_, SharedState>,
|
||||||
|
version: &GameVersion,
|
||||||
|
account: &MinecraftAccount,
|
||||||
|
) -> FeatureResult {
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
fn after_launch(&mut self, version: &GameVersion, account: &MinecraftAccount) -> FeatureResult {
|
fn after_launch(
|
||||||
|
&mut self,
|
||||||
|
state: &State<'_, SharedState>,
|
||||||
|
version: &GameVersion,
|
||||||
|
account: &MinecraftAccount,
|
||||||
|
) -> FeatureResult {
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -26,9 +37,14 @@ impl FeatureState {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl FeatureState {
|
impl FeatureState {
|
||||||
pub async fn launch(&self, version: &GameVersion, account: &MinecraftAccount) -> FeatureResult {
|
pub async fn launch(
|
||||||
|
&self,
|
||||||
|
state: &State<'_, SharedState>,
|
||||||
|
version: &GameVersion,
|
||||||
|
account: &MinecraftAccount,
|
||||||
|
) -> FeatureResult {
|
||||||
for feature in self.0.lock().await.iter_mut() {
|
for feature in self.0.lock().await.iter_mut() {
|
||||||
feature.launch(version, account)?;
|
feature.launch(state, version, account)?;
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
@@ -36,11 +52,12 @@ impl FeatureState {
|
|||||||
|
|
||||||
pub async fn after_launch(
|
pub async fn after_launch(
|
||||||
&self,
|
&self,
|
||||||
|
state: &State<'_, SharedState>,
|
||||||
version: &GameVersion,
|
version: &GameVersion,
|
||||||
account: &MinecraftAccount,
|
account: &MinecraftAccount,
|
||||||
) -> FeatureResult {
|
) -> FeatureResult {
|
||||||
for feature in self.0.lock().await.iter_mut() {
|
for feature in self.0.lock().await.iter_mut() {
|
||||||
feature.after_launch(version, account)?;
|
feature.after_launch(state, version, account)?;
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|||||||
@@ -125,7 +125,10 @@ pub async fn launch_game(
|
|||||||
|
|
||||||
app.emit("launch-status", "Launching").unwrap();
|
app.emit("launch-status", "Launching").unwrap();
|
||||||
|
|
||||||
feature_state.inner().launch(&version, &account).await?;
|
feature_state
|
||||||
|
.inner()
|
||||||
|
.launch(&state, &version, &account)
|
||||||
|
.await?;
|
||||||
|
|
||||||
launch(&config, Some(&emitter))
|
launch(&config, Some(&emitter))
|
||||||
.await
|
.await
|
||||||
@@ -136,7 +139,7 @@ pub async fn launch_game(
|
|||||||
|
|
||||||
feature_state
|
feature_state
|
||||||
.inner()
|
.inner()
|
||||||
.after_launch(&version, &account)
|
.after_launch(&state, &version, &account)
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
app.emit("is-launching", "false").unwrap();
|
app.emit("is-launching", "false").unwrap();
|
||||||
|
|||||||
Reference in New Issue
Block a user