b/game: support launching gk at version 0.1.35 and above (#163)

This commit is contained in:
Tyler Wilding 2023-04-22 12:07:14 -05:00 committed by GitHub
parent a17d4ef5ac
commit 3da5106f1d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 54 additions and 6 deletions

1
src-tauri/Cargo.lock generated
View file

@ -2289,6 +2289,7 @@ dependencies = [
"log",
"reqwest",
"rev_buf_reader",
"semver",
"serde",
"serde_json",
"sysinfo",

View file

@ -26,6 +26,7 @@ futures-util = "0.3.26"
log = "0.4.17"
reqwest = { version = "0.11", features = ["json"] }
rev_buf_reader = "0.3.0"
semver = "1.0.17"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0.95"
sysinfo = "0.28.4"

View file

@ -7,6 +7,7 @@ use std::{
};
use log::{info, warn};
use semver::Version;
use serde::{Deserialize, Serialize};
use serde_json::Value;
@ -493,16 +494,53 @@ pub async fn launch_game(
let config_lock = config.lock().await;
let config_info = common_prelude(&config_lock)?;
let tooling_version = Version::parse(
config_info
.active_version
.strip_prefix("v")
.unwrap_or(&config_info.active_version),
)
.unwrap_or(Version::new(0, 1, 35)); // assume new format if none can be found
let data_folder = get_data_dir(&config_info, &game_name, false)?;
let exec_info = get_exec_location(&config_info, "gk")?;
let mut args = vec!["-boot".to_string(), "-fakeiso".to_string()];
let mut args;
// NOTE - order unfortunately matters for gk args
if in_debug {
args.push("-debug".to_string());
if tooling_version.major == 0 && tooling_version.minor <= 1 && tooling_version.patch < 35 {
// old argument format
args = vec![
"-boot".to_string(),
"-fakeiso".to_string(),
"-proj-path".to_string(),
data_folder.to_string_lossy().into_owned(),
];
if in_debug {
args.push("-debug".to_string());
}
} else {
args = vec![
"-v".to_string(),
"--game".to_string(),
game_name,
"--proj-path".to_string(),
data_folder.to_string_lossy().into_owned(),
"--".to_string(),
"-boot".to_string(),
"-fakeiso".to_string(),
];
if in_debug {
args.push("-debug".to_string());
}
}
args.push("-proj-path".to_string());
args.push(data_folder.to_string_lossy().into_owned());
log::info!(
"Launching game version {:?} -> {:?} with args: {:?}",
&config_info.active_version,
tooling_version,
args
);
let log_file = create_log_file(&app_handle, "game.log", false)?;
let mut command = Command::new(exec_info.executable_path);
command

View file

@ -80,7 +80,15 @@
}
// Sort releases by published date
releases = releases.sort((a, b) => b.date.localeCompare(a.date));
releases = releases.sort((a, b) => {
if (a.date === undefined) {
return 1;
}
if (b.date === undefined) {
return -1;
}
return b.date.localeCompare(a.date);
});
versionsLoaded = true;
}