Mark persisted settings with serde(default)

This commit is contained in:
IQuant 2024-10-11 17:52:44 +03:00
parent e2aaa7bc2d
commit e73dbc9f02

View file

@ -4,7 +4,11 @@ use bookkeeping::{
save_state::SaveState,
};
use clipboard::{ClipboardContext, ClipboardProvider};
use eframe::egui::{self, Align2, Button, Color32, Context, DragValue, FontDefinitions, FontFamily, ImageButton, InnerResponse, Key, Margin, OpenUrl, Rect, RichText, ScrollArea, Slider, TextureOptions, Ui, UiBuilder, Vec2, Visuals, Window};
use eframe::egui::{
self, Align2, Button, Color32, Context, DragValue, FontDefinitions, FontFamily, ImageButton,
InnerResponse, Key, Margin, OpenUrl, Rect, RichText, ScrollArea, Slider, TextureOptions, Ui,
UiBuilder, Vec2, Visuals, Window,
};
use egui_plot::{Plot, PlotPoint, PlotUi, Text};
use image::DynamicImage::ImageRgba8;
use image::RgbaImage;
@ -57,6 +61,7 @@ pub(crate) enum GameMode {
}
#[derive(Debug, Decode, Encode, Clone, Serialize, Deserialize)]
#[serde(default)]
pub struct GameSettings {
seed: u64,
debug_mode: bool,
@ -155,6 +160,7 @@ impl Default for PlayerAppearance {
}
#[derive(Debug, Serialize, Deserialize)]
#[serde(default)]
struct AppSavedState {
addr: String,
nickname: Option<String>,
@ -490,47 +496,77 @@ impl App {
let (settings_rect, right) = rect.split_left_right_at_fraction(0.5);
let (steam_connect_rect, ip_connect_rect) = right.split_top_bottom_at_fraction(0.5);
ui.allocate_new_ui(UiBuilder{max_rect: Some(bottom_panel.shrink(group_shrink)), ..Default::default()}, |ui| {
filled_group(ui, |ui| {
ui.set_min_size(ui.available_size());
self.self_update.display_version(ui);
ui.allocate_new_ui(
UiBuilder {
max_rect: Some(bottom_panel.shrink(group_shrink)),
..Default::default()
},
|ui| {
filled_group(ui, |ui| {
ui.set_min_size(ui.available_size());
self.self_update.display_version(ui);
if self.self_update.request_update {
self.state = AppState::SelfUpdate;
}
});
});
ui.allocate_new_ui(UiBuilder{max_rect: Some(right_b_panel.shrink(group_shrink)), ..Default::default()}, |ui| {
filled_group(ui, |ui| {
ui.set_min_size(ui.available_size());
self.panel_right_bar(ui, ctx);
})
});
ui.allocate_new_ui(UiBuilder{max_rect: Some(settings_rect.shrink(group_shrink)), ..Default::default()}, |ui| {
filled_group(ui, |ui| {
ui.set_min_size(ui.available_size());
ScrollArea::both().auto_shrink(false).show(ui, |ui| {
self.show_game_settings(ui, true);
if self.self_update.request_update {
self.state = AppState::SelfUpdate;
}
});
});
});
ui.allocate_new_ui(UiBuilder{max_rect: Some(steam_connect_rect.shrink(group_shrink)), ..Default::default()}, |ui| {
filled_group(ui, |ui| {
ui.set_min_size(ui.available_size());
},
);
self.panel_connect_by_steam(ui);
});
});
ui.allocate_new_ui(UiBuilder{max_rect: Some(ip_connect_rect.shrink(group_shrink)), ..Default::default()}, |ui| {
filled_group(ui, |ui| {
ui.set_min_size(ui.available_size());
ui.allocate_new_ui(
UiBuilder {
max_rect: Some(right_b_panel.shrink(group_shrink)),
..Default::default()
},
|ui| {
filled_group(ui, |ui| {
ui.set_min_size(ui.available_size());
self.panel_connect_by_ip(ui);
});
});
self.panel_right_bar(ui, ctx);
})
},
);
ui.allocate_new_ui(
UiBuilder {
max_rect: Some(settings_rect.shrink(group_shrink)),
..Default::default()
},
|ui| {
filled_group(ui, |ui| {
ui.set_min_size(ui.available_size());
ScrollArea::both().auto_shrink(false).show(ui, |ui| {
self.show_game_settings(ui, true);
});
});
},
);
ui.allocate_new_ui(
UiBuilder {
max_rect: Some(steam_connect_rect.shrink(group_shrink)),
..Default::default()
},
|ui| {
filled_group(ui, |ui| {
ui.set_min_size(ui.available_size());
self.panel_connect_by_steam(ui);
});
},
);
ui.allocate_new_ui(
UiBuilder {
max_rect: Some(ip_connect_rect.shrink(group_shrink)),
..Default::default()
},
|ui| {
filled_group(ui, |ui| {
ui.set_min_size(ui.available_size());
self.panel_connect_by_ip(ui);
});
},
);
});
}