From 0ec47d39ac690922ef5957603953dd192f97fde7 Mon Sep 17 00:00:00 2001 From: Nikita Podvirnyi Date: Tue, 28 May 2024 19:00:15 +0200 Subject: [PATCH] feat(wuwa): initial multi-edition support --- Cargo.toml | 4 ++-- src/games/honkai/states.rs | 9 --------- src/games/wuwa/config/schema/game/mod.rs | 2 +- src/games/wuwa/config/schema/launcher/mod.rs | 9 +++++++++ src/games/wuwa/game.rs | 2 +- src/games/wuwa/states.rs | 13 +++++++++---- 6 files changed, 22 insertions(+), 17 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index f07c315..d508047 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,7 +9,7 @@ edition = "2021" [dependencies.anime-game-core] git = "https://github.com/an-anime-team/anime-game-core" -tag = "1.18.0" +tag = "1.18.1" features = ["all"] # path = "../anime-game-core" # ! for dev purposes only @@ -66,4 +66,4 @@ all = [ "fps-unlocker" ] -default = ["all"] +default = ["all", "wuwa"] diff --git a/src/games/honkai/states.rs b/src/games/honkai/states.rs index ad9d3d9..1bdcbff 100644 --- a/src/games/honkai/states.rs +++ b/src/games/honkai/states.rs @@ -10,8 +10,6 @@ use crate::honkai::config::Config; pub enum LauncherState { Launch, - MfplatPatchAvailable, - PatchNotVerified, PatchBroken, PatchUnsafe, @@ -48,7 +46,6 @@ pub struct LauncherStateParams { pub game_edition: GameEdition, pub patch_folder: PathBuf, - pub apply_mfplat: bool, pub status_updater: F } @@ -74,11 +71,6 @@ impl LauncherState { // Check game patch status (params.status_updater)(StateUpdating::Patch); - // Check if mfplat patch is needed - if params.apply_mfplat && !mfplat::is_applied(¶ms.wine_prefix)? { - return Ok(Self::MfplatPatchAvailable); - } - // Check jadeite patch status if !jadeite::is_installed(¶ms.patch_folder) { return Ok(Self::PatchNotInstalled); @@ -146,7 +138,6 @@ impl LauncherState { game_edition: config.launcher.edition, patch_folder: config.patch.path, - apply_mfplat: config.patch.apply_mfplat, status_updater }) diff --git a/src/games/wuwa/config/schema/game/mod.rs b/src/games/wuwa/config/schema/game/mod.rs index 03eed1c..0e853ef 100644 --- a/src/games/wuwa/config/schema/game/mod.rs +++ b/src/games/wuwa/config/schema/game/mod.rs @@ -36,7 +36,7 @@ impl Default for Game { let launcher_dir = launcher_dir().expect("Failed to get launcher dir"); Self { - path: launcher_dir.join("PGR"), + path: launcher_dir.join("Wuthering Waves"), wine: Wine::default(), dxvk: Dxvk::default(), enhancements: Enhancements::default(), diff --git a/src/games/wuwa/config/schema/launcher/mod.rs b/src/games/wuwa/config/schema/launcher/mod.rs index 81c6eac..0d1f55b 100644 --- a/src/games/wuwa/config/schema/launcher/mod.rs +++ b/src/games/wuwa/config/schema/launcher/mod.rs @@ -5,6 +5,8 @@ use serde_json::Value as JsonValue; use enum_ordinalize::Ordinalize; +use anime_game_core::wuwa::consts::GameEdition; + #[cfg(feature = "discord-rpc")] pub mod discord_rpc; @@ -54,6 +56,7 @@ impl Default for LauncherBehavior { #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] pub struct Launcher { pub language: String, + pub edition: GameEdition, pub style: LauncherStyle, pub temp: Option, pub repairer: Repairer, @@ -69,6 +72,7 @@ impl Default for Launcher { fn default() -> Self { Self { language: String::from("en-us"), + edition: GameEdition::from_system_lang(), style: LauncherStyle::default(), temp: launcher_dir().ok(), repairer: Repairer::default(), @@ -91,6 +95,11 @@ impl From<&JsonValue> for Launcher { None => default.language }, + edition: match value.get("edition") { + Some(value) => serde_json::from_value(value.clone()).unwrap_or(default.edition), + None => default.edition + }, + style: match value.get("style") { Some(value) => serde_json::from_value(value.to_owned()).unwrap_or_default(), None => default.style diff --git a/src/games/wuwa/game.rs b/src/games/wuwa/game.rs index eeae0ed..80133e9 100644 --- a/src/games/wuwa/game.rs +++ b/src/games/wuwa/game.rs @@ -71,7 +71,7 @@ pub fn run() -> anyhow::Result<()> { tracing::info!("Checking telemetry"); - if let Ok(Some(server)) = telemetry::is_disabled() { + if let Ok(Some(server)) = telemetry::is_disabled(config.launcher.edition) { return Err(anyhow::anyhow!("Telemetry server is not disabled: {server}")); } diff --git a/src/games/wuwa/states.rs b/src/games/wuwa/states.rs index bd58c41..a8a5622 100644 --- a/src/games/wuwa/states.rs +++ b/src/games/wuwa/states.rs @@ -35,8 +35,11 @@ pub enum StateUpdating { #[derive(Debug, Clone, PartialEq, Eq)] pub struct LauncherStateParams { - pub wine_prefix: PathBuf, pub game_path: PathBuf, + pub game_edition: GameEdition, + + pub wine_prefix: PathBuf, + pub fast_verify: bool, pub status_updater: F } @@ -83,7 +86,7 @@ impl LauncherState { } // Check telemetry servers - let disabled = telemetry::is_disabled() + let disabled = telemetry::is_disabled(params.game_edition) // Return true if there's no domain name resolved, or false otherwise .map(|result| result.is_none()) @@ -103,7 +106,7 @@ impl LauncherState { // Check game installation status (params.status_updater)(StateUpdating::Game); - let game = Game::new(¶ms.game_path, ()) + let game = Game::new(¶ms.game_path, params.game_edition) .with_fast_verify(params.fast_verify); let diff = game.try_get_diff()?; @@ -131,8 +134,10 @@ impl LauncherState { } Self::get(LauncherStateParams { + game_path: config.game.path.clone(), + game_edition: config.launcher.edition, + wine_prefix: config.get_wine_prefix_path(), - game_path: config.game.path, fast_verify: config.launcher.repairer.fast, status_updater