Implemented state

This commit is contained in:
Kr4ight
2026-04-06 20:02:56 +02:00
parent 725ac2187f
commit 9769a2d6c1
3 changed files with 32 additions and 9 deletions
+4 -1
View File
@@ -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 {
+23 -6
View File
@@ -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(())
+5 -2
View File
@@ -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();