add settings support for alternative replay glitching
This commit is contained in:
+31
-1
@@ -1,6 +1,10 @@
|
|||||||
use crate::{
|
use crate::{
|
||||||
features,
|
features,
|
||||||
gui::{settings::Settings, tools, ui_ext::UiExt},
|
gui::{
|
||||||
|
settings::{BlockMethod, ROCKSTAR_SAVE_SERVER, Settings},
|
||||||
|
tools,
|
||||||
|
ui_ext::UiExt,
|
||||||
|
},
|
||||||
util::{
|
util::{
|
||||||
consts::{colours, game::WINDOW_TITLE},
|
consts::{colours, game::WINDOW_TITLE},
|
||||||
persistent_state::PersistentState,
|
persistent_state::PersistentState,
|
||||||
@@ -223,6 +227,32 @@ impl App {
|
|||||||
ui.label("Launch version");
|
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) {
|
fn show_about_stage(&self, _ctx: &egui::Context, ui: &mut egui::Ui) {
|
||||||
|
|||||||
+32
-7
@@ -2,12 +2,7 @@ use crate::util::win;
|
|||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use strum::{Display, EnumIter};
|
use strum::{Display, EnumIter};
|
||||||
|
|
||||||
#[derive(Clone, Copy, Debug, Default, Display, PartialEq, Eq, Serialize, Deserialize, EnumIter)]
|
pub const ROCKSTAR_SAVE_SERVER: &str = "192.81.241.171";
|
||||||
pub enum LaunchVersion {
|
|
||||||
#[default]
|
|
||||||
Enhanced,
|
|
||||||
Legacy,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Clone, Copy, Debug, Default, Display, PartialEq, Eq, Serialize, Deserialize, EnumIter)]
|
#[derive(Clone, Copy, Debug, Default, Display, PartialEq, Eq, Serialize, Deserialize, EnumIter)]
|
||||||
pub enum Theme {
|
pub enum Theme {
|
||||||
@@ -42,9 +37,39 @@ impl From<Theme> 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 struct Settings {
|
||||||
pub start_elevated: bool,
|
pub start_elevated: bool,
|
||||||
pub theme: Theme,
|
pub theme: Theme,
|
||||||
pub launch_version: LaunchVersion,
|
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),
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user