diff --git a/src-tauri/src/features/instance_sync.rs b/src-tauri/src/features/instance_sync.rs index 6f9dc59..f597f98 100644 --- a/src-tauri/src/features/instance_sync.rs +++ b/src-tauri/src/features/instance_sync.rs @@ -1,8 +1,9 @@ use std::collections::HashMap; use lyceris::auth::microsoft::MinecraftAccount; +use tauri::State; -use crate::{features::Feature, GameVersion}; +use crate::{features::Feature, GameVersion, SharedState}; pub struct InstanceSync {} @@ -15,6 +16,7 @@ impl Default for InstanceSync { impl Feature for InstanceSync { fn launch( &mut self, + state: &State<'_, SharedState>, version: &GameVersion, account: &MinecraftAccount, ) -> super::FeatureResult { @@ -25,6 +27,7 @@ impl Feature for InstanceSync { fn after_launch( &mut self, + state: &State<'_, SharedState>, version: &GameVersion, account: &MinecraftAccount, ) -> super::FeatureResult { diff --git a/src-tauri/src/features/mod.rs b/src-tauri/src/features/mod.rs index 6730d77..76962ee 100644 --- a/src-tauri/src/features/mod.rs +++ b/src-tauri/src/features/mod.rs @@ -1,7 +1,8 @@ use lyceris::auth::microsoft::MinecraftAccount; +use tauri::State; use tokio::sync::Mutex; -use crate::{features::instance_sync::InstanceSync, GameVersion}; +use crate::{features::instance_sync::InstanceSync, GameVersion, SharedState}; mod instance_sync; @@ -9,10 +10,20 @@ pub type FeatureResult = Result<(), String>; #[allow(unused_variables)] 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(()) } - fn after_launch(&mut self, version: &GameVersion, account: &MinecraftAccount) -> FeatureResult { + fn after_launch( + &mut self, + state: &State<'_, SharedState>, + version: &GameVersion, + account: &MinecraftAccount, + ) -> FeatureResult { Ok(()) } } @@ -26,9 +37,14 @@ 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() { - feature.launch(version, account)?; + feature.launch(state, version, account)?; } Ok(()) @@ -36,11 +52,12 @@ impl FeatureState { pub async fn after_launch( &self, + state: &State<'_, SharedState>, version: &GameVersion, account: &MinecraftAccount, ) -> FeatureResult { for feature in self.0.lock().await.iter_mut() { - feature.after_launch(version, account)?; + feature.after_launch(state, version, account)?; } Ok(()) diff --git a/src-tauri/src/launcher/mod.rs b/src-tauri/src/launcher/mod.rs index e98091d..5d686a7 100644 --- a/src-tauri/src/launcher/mod.rs +++ b/src-tauri/src/launcher/mod.rs @@ -125,7 +125,10 @@ pub async fn launch_game( 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)) .await @@ -136,7 +139,7 @@ pub async fn launch_game( feature_state .inner() - .after_launch(&version, &account) + .after_launch(&state, &version, &account) .await?; app.emit("is-launching", "false").unwrap();