From 70890beb256864e7b62afcba94ca30138b42f611 Mon Sep 17 00:00:00 2001 From: Sofia Date: Sun, 26 Jul 2026 03:42:45 +0300 Subject: [PATCH] Make settings resettable --- rust/src/game_settings.rs | 2 +- rust/src/ui/settings.rs | 219 +++++++++++++++++++++++--------------- 2 files changed, 136 insertions(+), 85 deletions(-) diff --git a/rust/src/game_settings.rs b/rust/src/game_settings.rs index aa7f68e..0eafce4 100644 --- a/rust/src/game_settings.rs +++ b/rust/src/game_settings.rs @@ -51,7 +51,7 @@ pub struct KeybindSettings { pub jump: Keybind, } -#[derive(Clone, Copy, Debug, Serialize, Deserialize)] +#[derive(Clone, Copy, Debug, Serialize, Deserialize, PartialEq, PartialOrd)] pub enum Keybind { Key(i32), MouseButton(i32), diff --git a/rust/src/ui/settings.rs b/rust/src/ui/settings.rs index eb6eb53..05c2ba6 100644 --- a/rust/src/ui/settings.rs +++ b/rust/src/ui/settings.rs @@ -10,7 +10,7 @@ use godot::{ }; use crate::{ - game_settings::{GameSettingsManager, Keybind}, + game_settings::{GameSettings, GameSettingsManager, Keybind}, ui::slider::SliderContainer, }; @@ -85,14 +85,14 @@ impl Setting { } } -#[derive(Clone)] +#[derive(Clone, Debug, PartialEq, PartialOrd)] pub enum SettingValue { SliderNumber(SliderValue), String(String), Keybind(Keybind), } -#[derive(Clone, Copy)] +#[derive(Clone, Copy, Debug, PartialEq, PartialOrd)] pub struct SliderValue { min: f64, max: f64, @@ -114,9 +114,13 @@ pub struct SettingsPanel { reset_button: Option>, settings: HashMap, + default_settings: HashMap, keybind_button: Option<(Setting, Gd