From bc1df1f5e19948bfa5ce4135e593d8a5a7bfd6bc Mon Sep 17 00:00:00 2001 From: fnrir Date: Fri, 18 Aug 2023 14:31:04 +0200 Subject: [PATCH] Make sure it's safe to run the game --- src-tauri/src/system_helpers.rs | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src-tauri/src/system_helpers.rs b/src-tauri/src/system_helpers.rs index 45b0c98..aa0cf74 100644 --- a/src-tauri/src/system_helpers.rs +++ b/src-tauri/src/system_helpers.rs @@ -15,7 +15,8 @@ use { use crate::AAGL_THREAD; #[cfg(target_os = "linux")] use anime_launcher_sdk::{ - config::ConfigExt, genshin::config::Config, genshin::game, wincompatlib::prelude::*, + config::ConfigExt, genshin::config::Config, genshin::game, genshin::states::LauncherState, + wincompatlib::prelude::*, }; #[cfg(target_os = "linux")] use std::{path::Path, process::Stdio, thread}; @@ -304,6 +305,25 @@ pub fn run_un_elevated(path: String, args: Option) { || exec_name == ["Gen", "shin", "Impact", ".exe"].join("").as_str() { let game_thread = thread::spawn(|| { + 'statechk: { + let state = LauncherState::get_from_config(|_| {}); + let Ok(state) = state else { + println!("Failed to get state: {}", state.unwrap_err()); + break 'statechk; + }; + use anime_launcher_sdk::genshin::states::LauncherState::*; + match state { + FolderMigrationRequired { from, .. } => Err(format!( + "A folder migration is required ({:?} needs to be moved)", + from + )), + WineNotInstalled => Err("Wine is not installed".to_string()), + PrefixNotExists => Err("The Wine prefix does not exist".to_string()), + GameNotInstalled(_) => Err("The game is not installed".to_string()), + _ => Ok(()), + } + .expect("Can't launch game. Check the other launcher."); + } if let Err(e) = game::run() { println!("An error occurred while running the game: {}", e); }