diff --git a/src/gui/app.rs b/src/gui/app.rs index 3095025..a02bf08 100644 --- a/src/gui/app.rs +++ b/src/gui/app.rs @@ -1,6 +1,10 @@ use crate::{ features, - gui::{settings::Settings, tools, ui_ext::UiExt}, + gui::{ + settings::{BlockMethod, ROCKSTAR_SAVE_SERVER, Settings}, + tools, + ui_ext::UiExt, + }, util::{ consts::{colours, game::WINDOW_TITLE}, persistent_state::PersistentState, @@ -223,6 +227,32 @@ impl App { ui.label("Launch version"); }); }); + ui.collapsing("Network", |ui| { + ui.horizontal(|ui| { + egui::ComboBox::from_id_salt("Block method") + .selected_text(self.settings.block_method.to_string()) + .show_ui(ui, |ui| { + ui.build_menu(&mut self.settings.block_method); + }); + ui.label("Block method"); + }); + ui.horizontal(|ui| { + ui.add_enabled_ui( + self.settings.block_method == BlockMethod::SaveServer, + |ui| { + ui.add( + egui::TextEdit::singleline(&mut self.settings.save_server_ip) + .char_limit(15) + .desired_width(92.0), + ); + ui.label("Save server IP"); + if ui.button("↺").clicked() { + self.settings.save_server_ip = String::from(ROCKSTAR_SAVE_SERVER); + }; + }, + ); + }); + }); } fn show_about_stage(&self, _ctx: &egui::Context, ui: &mut egui::Ui) { diff --git a/src/gui/settings.rs b/src/gui/settings.rs index 9d67f7d..79958b1 100644 --- a/src/gui/settings.rs +++ b/src/gui/settings.rs @@ -2,12 +2,7 @@ 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, -} +pub const ROCKSTAR_SAVE_SERVER: &str = "192.81.241.171"; #[derive(Clone, Copy, Debug, Default, Display, PartialEq, Eq, Serialize, Deserialize, EnumIter)] pub enum Theme { @@ -42,9 +37,39 @@ impl From for catppuccin_egui::Theme { } } -#[derive(Clone, Debug, Default, Serialize, Deserialize)] +#[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 BlockMethod { + #[default] + #[strum(to_string = "Entire game")] + EntireGame, + #[strum(to_string = "Save server")] + SaveServer, +} + +#[derive(Clone, Debug, Serialize, Deserialize)] pub struct Settings { pub start_elevated: bool, pub theme: Theme, pub launch_version: LaunchVersion, + pub save_server_ip: String, + pub block_method: BlockMethod, +} + +impl Default for Settings { + fn default() -> Self { + Self { + start_elevated: false, + theme: Theme::default(), + launch_version: LaunchVersion::default(), + block_method: BlockMethod::default(), + save_server_ip: String::from(ROCKSTAR_SAVE_SERVER), + } + } }