From c6c21876523ec6ecdeb97242be62a0afb35fab94 Mon Sep 17 00:00:00 2001 From: Logan McNaughton <848146+loganmc10@users.noreply.github.com> Date: Tue, 14 Jan 2025 19:50:35 +0100 Subject: [PATCH] add fullscreen option (#146) * add fullscreen option * fix crash --- parallel-rdp/interface.cpp | 5 ++++- src/ui/config.rs | 6 +++++- src/ui/gui.rs | 10 +++++++++- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/parallel-rdp/interface.cpp b/parallel-rdp/interface.cpp index f2ee075..3c09f7d 100644 --- a/parallel-rdp/interface.cpp +++ b/parallel-rdp/interface.cpp @@ -142,7 +142,10 @@ int sdl_event_filter(void *userdata, SDL_Event *event) emu_running = false; break; case SDL_WINDOWEVENT_RESIZED: - wsi_platform->do_resize(); + if (emu_running) + { + wsi_platform->do_resize(); + } break; default: break; diff --git a/src/ui/config.rs b/src/ui/config.rs index 6e51b8d..a209da4 100644 --- a/src/ui/config.rs +++ b/src/ui/config.rs @@ -21,6 +21,7 @@ pub struct Input { #[derive(serde::Serialize, serde::Deserialize)] pub struct Video { pub upscale: bool, + pub fullscreen: bool, } #[derive(serde::Serialize, serde::Deserialize)] pub struct Config { @@ -45,7 +46,10 @@ impl Config { controller_enabled: [true, false, false, false], emulate_vru: false, }, - video: Video { upscale: false }, + video: Video { + upscale: false, + fullscreen: false, + }, } } } diff --git a/src/ui/gui.rs b/src/ui/gui.rs index 58f9b7a..f6ff47c 100644 --- a/src/ui/gui.rs +++ b/src/ui/gui.rs @@ -14,6 +14,7 @@ pub struct GopherEguiApp { input_profiles: Vec, controller_enabled: [bool; 4], upscale: bool, + fullscreen: bool, emulate_vru: bool, show_vru_dialog: bool, vru_window_receiver: Option>>, @@ -84,6 +85,7 @@ impl GopherEguiApp { input_profiles: get_input_profiles(&game_ui), controller_enabled: game_ui.config.input.controller_enabled, upscale: game_ui.config.video.upscale, + fullscreen: game_ui.config.video.fullscreen, emulate_vru: game_ui.config.input.emulate_vru, show_vru_dialog: false, vru_window_receiver: None, @@ -99,6 +101,7 @@ fn save_config( selected_profile: [String; 4], controller_enabled: [bool; 4], upscale: bool, + fullscreen: bool, emulate_vru: bool, ) { let joystick_subsystem = game_ui.joystick_subsystem.as_ref().unwrap(); @@ -118,6 +121,7 @@ fn save_config( game_ui.config.input.input_profile_binding = selected_profile; game_ui.config.input.controller_enabled = controller_enabled; + game_ui.config.video.fullscreen = fullscreen; game_ui.config.video.upscale = upscale; game_ui.config.input.emulate_vru = emulate_vru; } @@ -131,6 +135,7 @@ impl Drop for GopherEguiApp { self.selected_profile.clone(), self.controller_enabled, self.upscale, + self.fullscreen, self.emulate_vru, ); } @@ -181,6 +186,7 @@ impl eframe::App for GopherEguiApp { let selected_profile = self.selected_profile.clone(); let controller_enabled = self.controller_enabled; let upscale = self.upscale; + let fullscreen = self.fullscreen; let emulate_vru = self.emulate_vru; let config_dir = self.config_dir.clone(); let cache_dir = self.cache_dir.clone(); @@ -221,6 +227,7 @@ impl eframe::App for GopherEguiApp { selected_profile, controller_enabled, upscale, + fullscreen, emulate_vru, ); if emulate_vru { @@ -232,7 +239,7 @@ impl eframe::App for GopherEguiApp { std::path::Path::new(file.path()), data_dir, &mut device, - false, + fullscreen, ); let result = std::fs::remove_file(running_file.clone()); if result.is_err() { @@ -299,6 +306,7 @@ impl eframe::App for GopherEguiApp { }); ui.add_space(32.0); ui.checkbox(&mut self.upscale, "High-Res Graphics"); + ui.checkbox(&mut self.fullscreen, "Fullscreen (Esc closes game)"); ui.checkbox( &mut self.emulate_vru, "Emulate VRU (connects VRU to controller port 4)",