Put ux settings in Option<> for consistency

This commit is contained in:
IQuant 2024-11-28 17:55:12 +03:00
parent 8b599a46a5
commit b95d821692
2 changed files with 41 additions and 27 deletions

View file

@ -395,19 +395,19 @@ struct PlayerAppearance {
cosmetics: (bool, bool, bool), cosmetics: (bool, bool, bool),
} }
#[derive(Debug, Serialize, Deserialize, Decode, Encode, Copy, Clone)] #[derive(Debug, Serialize, Deserialize, Decode, Encode, Copy, Clone, Default)]
#[serde(default)] #[serde(default)]
pub struct UXSettings { pub struct UXSettings {
ping_lifetime: u32, ping_lifetime: Option<u32>,
ping_scale: f32, ping_scale: Option<f32>,
} }
impl Default for UXSettings { impl UXSettings {
fn default() -> Self { fn ping_lifetime(&self) -> u32 {
Self { self.ping_lifetime.unwrap_or(5)
ping_lifetime: 5, }
ping_scale: 0.5, fn ping_scale(&self) -> f32 {
} self.ping_scale.unwrap_or(0.5)
} }
} }
@ -1113,22 +1113,36 @@ impl App {
ui.add_space(10.0); ui.add_space(10.0);
ui.label(tr("ping-note")); ui.label(tr("ping-note"));
ui.add_space(10.0); ui.add_space(10.0);
ui.add(
egui::Slider::new(&mut self.ux_settings.ping_lifetime, 1..=60) let mut tmp = self.ux_settings.ping_lifetime();
.text(tr("ping-lifetime")) if ui
.min_decimals(0) .add(
.max_decimals(0) egui::Slider::new(&mut tmp, 1..=60)
.step_by(1.0), .text(tr("ping-lifetime"))
) .min_decimals(0)
.on_hover_text(tr("ping-lifetime-tooltip")); .max_decimals(0)
ui.add( .step_by(1.0),
egui::Slider::new(&mut self.ux_settings.ping_scale, 0.0..=1.5) )
.text(tr("ping-scale")) .on_hover_text(tr("ping-lifetime-tooltip"))
.min_decimals(0) .changed()
.max_decimals(1) {
.step_by(0.1), self.ux_settings.ping_lifetime = Some(tmp);
) }
.on_hover_text(tr("ping-scale-tooltip"));
let mut tmp = self.ux_settings.ping_scale();
if ui
.add(
egui::Slider::new(&mut tmp, 0.0..=1.5)
.text(tr("ping-scale"))
.min_decimals(0)
.max_decimals(1)
.step_by(0.1),
)
.on_hover_text(tr("ping-scale-tooltip"))
.changed()
{
self.ux_settings.ping_scale = Some(tmp);
}
} }
fn connect_to_steam_lobby(&mut self, lobby_id: String) { fn connect_to_steam_lobby(&mut self, lobby_id: String) {

View file

@ -603,9 +603,9 @@ impl NetManager {
state.try_ws_write_option( state.try_ws_write_option(
"ping_lifetime", "ping_lifetime",
self.init_settings.ux_settings.ping_lifetime, self.init_settings.ux_settings.ping_lifetime(),
); );
state.try_ws_write_option("ping_scale", self.init_settings.ux_settings.ping_scale); state.try_ws_write_option("ping_scale", self.init_settings.ux_settings.ping_scale());
let progress = settings.progress.join(","); let progress = settings.progress.join(",");
state.try_ws_write_option("progress", progress.as_str()); state.try_ws_write_option("progress", progress.as_str());