feat(core): updated core library & sdk, changed game running mechanism

New core library version contain updated voice packages sizes
for more precise versioning

New SDK version's `game::run()` function freezes thread
so now game launching should work better
This commit is contained in:
Observer KRypt0n_ 2023-03-04 18:48:41 +02:00
parent f11b527e8d
commit 24c8f7fb7c
No known key found for this signature in database
GPG key ID: 844DA47BA25FE1E2
3 changed files with 24 additions and 23 deletions

4
Cargo.lock generated
View file

@ -31,7 +31,7 @@ dependencies = [
[[package]] [[package]]
name = "anime-game-core" name = "anime-game-core"
version = "1.3.5" version = "1.3.6"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"bzip2", "bzip2",
@ -74,7 +74,7 @@ dependencies = [
[[package]] [[package]]
name = "anime-launcher-sdk" name = "anime-launcher-sdk"
version = "0.2.2" version = "0.2.4"
dependencies = [ dependencies = [
"anime-game-core", "anime-game-core",
"anyhow", "anyhow",

@ -1 +1 @@
Subproject commit 6fa47d033864dbb5cf8628346ccf2894b35fca9a Subproject commit 2af464536c09432290a7737522420e10479645df

View file

@ -81,6 +81,9 @@ pub enum AppMsg {
PredownloadUpdate, PredownloadUpdate,
PerformAction, PerformAction,
HideWindow,
ShowWindow,
Toast { Toast {
title: String, title: String,
description: Option<String> description: Option<String>
@ -799,30 +802,20 @@ impl SimpleComponent for App {
LauncherState::PatchAvailable(Patch::NotAvailable) | LauncherState::PatchAvailable(Patch::NotAvailable) |
LauncherState::PredownloadAvailable { .. } | LauncherState::PredownloadAvailable { .. } |
LauncherState::Launch => { LauncherState::Launch => {
// TODO: make game::run() freeze current process while the game is running sender.input(AppMsg::HideWindow);
std::thread::spawn(move || {
if let Err(err) = anime_launcher_sdk::game::run() { if let Err(err) = anime_launcher_sdk::game::run() {
tracing::error!("Failed to launch game: {err}"); tracing::error!("Failed to launch game: {err}");
self.toast(tr("game-launching-failed"), Some(err.to_string())); sender.input(AppMsg::Toast {
title: tr("game-launching-failed"),
description: Some(err.to_string())
});
} }
else { sender.input(AppMsg::ShowWindow);
MAIN_WINDOW.as_ref().unwrap_unchecked().hide(); });
std::thread::sleep(std::time::Duration::from_secs(2));
while let Ok(output) = std::process::Command::new("ps").arg("-A").stdout(std::process::Stdio::piped()).output() {
let output = String::from_utf8_lossy(&output.stdout);
if !output.contains("GenshinImpact.e") && !output.contains("unlocker.exe") {
break;
}
std::thread::sleep(std::time::Duration::from_secs(3));
}
MAIN_WINDOW.as_ref().unwrap_unchecked().show();
}
} }
LauncherState::PatchAvailable(patch) => { LauncherState::PatchAvailable(patch) => {
@ -1091,6 +1084,14 @@ impl SimpleComponent for App {
} }
} }
AppMsg::HideWindow => unsafe {
MAIN_WINDOW.as_ref().unwrap_unchecked().hide();
}
AppMsg::ShowWindow => unsafe {
MAIN_WINDOW.as_ref().unwrap_unchecked().show();
}
AppMsg::Toast { title, description } => self.toast(title, description) AppMsg::Toast { title, description } => self.toast(title, description)
} }
} }