add option to launch legacy version of the game & fix epic games launch urls

This commit is contained in:
2025-09-05 16:09:24 +01:00
parent 98a6545b27
commit 5c5e6d60a1
3 changed files with 37 additions and 9 deletions
+20 -8
View File
@@ -1,3 +1,4 @@
use crate::gui::settings::LaunchVersion;
use serde::{Deserialize, Serialize};
use std::{path::PathBuf, process::Command};
use strum::{Display, EnumIter};
@@ -18,16 +19,24 @@ pub struct Launch {
pub selected: Platform,
}
pub fn launch(platform: &Platform) {
pub fn launch(platform: &Platform, version: &LaunchVersion) {
match platform {
Platform::Steam => {
let _ = open::that_detached("steam://run/3240220");
let steam_url = if *version == LaunchVersion::Enhanced {
"steam://run/3240220"
} else {
"steam://run/271590"
};
let _ = open::that_detached(steam_url);
}
Platform::Rockstar => {
let hklm = RegKey::predef(HKEY_LOCAL_MACHINE);
let Ok(gta_v_enhanced) =
hklm.open_subkey(r"SOFTWARE\WOW6432Node\Rockstar Games\GTAV Enhanced")
else {
let rockstar_url = if *version == LaunchVersion::Enhanced {
r"SOFTWARE\WOW6432Node\Rockstar Games\GTAV Enhanced"
} else {
r"SOFTWARE\WOW6432Node\Rockstar Games\Grand Theft Auto V"
};
let Ok(gta_v_enhanced) = hklm.open_subkey(rockstar_url) else {
return;
};
let Ok(install_folder): Result<String, std::io::Error> =
@@ -40,9 +49,12 @@ pub fn launch(platform: &Platform) {
let _ = Command::new(play_gtav_path).spawn();
}
Platform::Epic => {
let _ = open::that_detached(
"com.epicgames.launcher://apps/331226ba7c944720baa99103cb1fe80c?action=launch&silent=true",
);
let epic_url = if *version == LaunchVersion::Enhanced {
"com.epicgames.launcher://apps/8769e24080ea413b8ebca3f1b8c50951?action=launch&silent=true"
} else {
"com.epicgames.launcher://apps/9d2d0eb64d5c44529cece33fe2a46482?action=launch&silent=true"
};
let _ = open::that_detached(epic_url);
}
}
}
+9 -1
View File
@@ -95,7 +95,7 @@ impl App {
ui.header("Game");
ui.horizontal(|ui| {
if ui.button("Launch").clicked() {
features::launch::launch(&self.launch.selected);
features::launch::launch(&self.launch.selected, &self.settings.launch_version);
}
egui::ComboBox::from_id_salt("Launch")
.selected_text(self.launch.selected.to_string())
@@ -190,6 +190,14 @@ impl App {
}
fn show_settings_stage(&mut self, ctx: &egui::Context, ui: &mut egui::Ui) {
ui.horizontal(|ui| {
ui.label("Launch version");
egui::ComboBox::from_id_salt("Launch version")
.selected_text(self.settings.launch_version.to_string())
.show_ui(ui, |ui| {
ui.build_menu(&mut self.settings.launch_version);
});
});
ui.horizontal(|ui| {
let selection = self.settings.theme;
ui.label("Theme");
+8
View File
@@ -2,6 +2,13 @@ use crate::util::win;
use serde::{Deserialize, Serialize};
use strum::{Display, EnumIter};
#[derive(Clone, Copy, Debug, Default, Display, PartialEq, Eq, Serialize, Deserialize, EnumIter)]
pub enum LaunchVersion {
#[default]
Enhanced,
Legacy,
}
#[derive(Clone, Copy, Debug, Default, Display, PartialEq, Eq, Serialize, Deserialize, EnumIter)]
pub enum Theme {
#[default]
@@ -37,6 +44,7 @@ impl From<Theme> for catppuccin_egui::Theme {
#[derive(Clone, Debug, Default, Serialize, Deserialize)]
pub struct Settings {
pub launch_version: LaunchVersion,
pub theme: Theme,
pub start_elevated: bool,
}