Implemented state
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -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(())
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user