example_glium: restore example app state
@@ -14,7 +14,10 @@ struct Window {
size: Option<Vec2>,
}
-fn read_state(memory_json_path: impl AsRef<std::path::Path>) -> Option<Window> {
+fn read_json<T>(memory_json_path: impl AsRef<std::path::Path>) -> Option<T>
+where
+ T: serde::de::DeserializeOwned,
+{
match std::fs::File::open(memory_json_path) {
Ok(file) => {
let reader = std::io::BufReader::new(file);
@@ -37,8 +40,10 @@ fn main() {
// TODO: combine
let memory_path = "emigui.json";
let settings_json_path: &str = "window.json";
+ let app_json_path: &str = "example_app.json";
- let mut window_settings: Window = read_state(settings_json_path).unwrap_or_default();
+ let mut example_app: ExampleApp = read_json(app_json_path).unwrap_or_default();
+ let mut window_settings: Window = read_json(settings_json_path).unwrap_or_default();
let mut events_loop = glutin::EventsLoop::new();
let window = glutin::WindowBuilder::new().with_title("Emigui example");
@@ -81,7 +86,6 @@ fn main() {
let mut running = true;
let mut frame_start = Instant::now();
let mut frame_times = emigui::MovementTracker::new(1000, 1.0);
- let mut example_app = ExampleApp::default();
let mut clipboard = emigui_glium::init_clipboard();
emigui_glium::read_memory(&ctx, memory_path);
@@ -157,6 +161,9 @@ fn main() {
eprintln!("ERROR: Failed to save emigui state: {}", err);
}
+ serde_json::to_writer_pretty(std::fs::File::create(app_json_path).unwrap(), &example_app)
+ .unwrap();
+
serde_json::to_writer_pretty(
std::fs::File::create(settings_json_path).unwrap(),
&window_settings,
