aboutsummaryrefslogtreecommitdiff
path: root/src-tauri/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src-tauri/src/lib.rs')
-rw-r--r--src-tauri/src/lib.rs37
1 files changed, 37 insertions, 0 deletions
diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs
index d1073387..9a3cd471 100644
--- a/src-tauri/src/lib.rs
+++ b/src-tauri/src/lib.rs
@@ -251,3 +251,40 @@ pub async fn install_northstar(game_path: &str) -> Result<String> {
pub fn get_host_os() -> String {
env::consts::OS.to_string()
}
+
+pub fn launch_northstar(game_install: GameInstall) -> Result<String, String> {
+ dbg!(game_install.clone());
+
+ // Some safety checks before, should have more in the future
+ if get_northstar_version_number(game_install.game_path.clone()).is_err() {
+ return Err(anyhow!("Not all checks were met").to_string());
+ }
+
+ let host_os = get_host_os();
+
+ // Switch to Titanfall2 directory for launching
+ // NorthstarLauncher.exe expects to be run from that folder
+ if std::env::set_current_dir(game_install.game_path.clone()).is_err() {
+ // We failed to get to Titanfall2 directory
+ return Err(anyhow!("Couldn't access Titanfall2 directory").to_string());
+ }
+
+ // Only Windows with Steam or Origin are supported at the moment
+ if host_os == "windows"
+ && (matches!(game_install.install_type, InstallType::STEAM)
+ || matches!(game_install.install_type, InstallType::ORIGIN))
+ {
+ let _output =
+ std::process::Command::new(format!("{}/NorthstarLauncher.exe", game_install.game_path))
+ // .args(&["a", "b"])
+ .spawn()
+ .expect("failed to execute process");
+ return Ok("Launched game".to_string());
+ }
+
+ Err(format!(
+ "Not yet implemented for {:?} on {}",
+ game_install.install_type,
+ get_host_os()
+ ))
+}