From 22765d9aa5dff5efaa89182ccde4a9994dc46acc Mon Sep 17 00:00:00 2001 From: Paris DOUADY Date: Wed, 14 Feb 2024 15:25:02 +0100 Subject: [PATCH] cleanup old menu --- native_app/src/game_loop.rs | 2 +- native_app/src/gui/debug_inspect.rs | 2 +- .../gui/{windows/debug.rs => debug_window.rs} | 27 ++++- native_app/src/gui/hud.rs | 6 +- native_app/src/gui/mod.rs | 2 +- native_app/src/gui/windows/mod.rs | 101 ------------------ native_app/src/init.rs | 2 +- native_app/src/newgui/hud/menu.rs | 1 - native_app/src/newgui/inspect/mod.rs | 2 +- native_app/src/newgui/mod.rs | 5 +- 10 files changed, 32 insertions(+), 118 deletions(-) rename native_app/src/gui/{windows/debug.rs => debug_window.rs} (96%) delete mode 100644 native_app/src/gui/windows/mod.rs diff --git a/native_app/src/game_loop.rs b/native_app/src/game_loop.rs index ea5ffd2d..ecf43ace 100644 --- a/native_app/src/game_loop.rs +++ b/native_app/src/game_loop.rs @@ -9,8 +9,8 @@ use geom::{vec2, vec3, Camera, LinearColor}; use simulation::Simulation; use crate::audio::GameAudio; +use crate::gui::debug_window::DebugObjs; use crate::gui::render_oldgui; -use crate::gui::windows::debug::DebugObjs; use crate::inputmap::{Bindings, InputAction, InputMap}; use crate::newgui; use crate::newgui::follow::FollowEntity; diff --git a/native_app/src/gui/debug_inspect.rs b/native_app/src/gui/debug_inspect.rs index 4647f1b1..fa23fa62 100644 --- a/native_app/src/gui/debug_inspect.rs +++ b/native_app/src/gui/debug_inspect.rs @@ -1,6 +1,7 @@ use egui::Ui; use egui::{Context, Window}; +use crate::gui::debug_window::DebugState; use egui_inspect::{Inspect, InspectArgs}; use simulation::economy::Market; use simulation::transportation::Location; @@ -9,7 +10,6 @@ use simulation::{ WagonEnt, }; -use crate::gui::windows::debug::DebugState; use crate::newgui::follow::FollowEntity; use crate::newgui::InspectedEntity; use crate::uiworld::UiWorld; diff --git a/native_app/src/gui/windows/debug.rs b/native_app/src/gui/debug_window.rs similarity index 96% rename from native_app/src/gui/windows/debug.rs rename to native_app/src/gui/debug_window.rs index c164a87c..4046a235 100644 --- a/native_app/src/gui/windows/debug.rs +++ b/native_app/src/gui/debug_window.rs @@ -1,16 +1,16 @@ #![allow(clippy::type_complexity)] use crate::game_loop::Timings; -use crate::newgui::InspectedEntity; +use crate::newgui::{GuiState, InspectedEntity}; use crate::uiworld::UiWorld; use simulation::map_dynamic::ParkingManagement; use simulation::transportation::TransportGrid; use simulation::{Simulation, TrainID}; use std::time::{Duration, Instant}; -use crate::inputmap::InputMap; +use crate::inputmap::{InputAction, InputMap}; use crate::newgui::windows::settings::Settings; -use egui::Widget; +use egui::{Context, Widget}; use engine::{PerfCountersStatic, Tesselator}; use geom::{Camera, Color, LinearColor, Spline3, Vec2}; use prototypes::{GameDuration, GameTime, SECONDS_PER_DAY}; @@ -67,8 +67,27 @@ impl Default for TestFieldProperties { } } +pub fn debug_window(ui: &Context, uiworld: &UiWorld, sim: &Simulation) { + if uiworld + .write::() + .just_act + .contains(&InputAction::OpenDebugMenu) + { + uiworld.write::().debug_window ^= true; + } + + let mut opened = uiworld.read::().debug_window; + debug( + egui::Window::new("Debug").open(&mut opened), + ui, + uiworld, + sim, + ); + uiworld.write::().debug_window = opened; +} + /// debug window for various debug options -pub fn debug(window: egui::Window<'_>, ui: &egui::Context, uiworld: &UiWorld, sim: &Simulation) { +fn debug(window: egui::Window<'_>, ui: &egui::Context, uiworld: &UiWorld, sim: &Simulation) { window.show(ui, |ui| { let mut objs = uiworld.write::(); for (val, name, _) in &mut objs.0 { diff --git a/native_app/src/gui/hud.rs b/native_app/src/gui/hud.rs index 278dce03..1c8dc636 100644 --- a/native_app/src/gui/hud.rs +++ b/native_app/src/gui/hud.rs @@ -6,6 +6,7 @@ use simulation::Simulation; use crate::gui::chat::chat; use crate::gui::debug_inspect::debug_inspector; +use crate::gui::debug_window::debug_window; use crate::newgui::{ErrorTooltip, GuiState, PotentialCommands}; use crate::uiworld::UiWorld; @@ -20,10 +21,7 @@ pub fn render_oldgui(ui: &Context, uiworld: &UiWorld, sim: &Simulation) { chat(ui, uiworld, sim); - uiworld - .write::() - .old_windows - .render(ui, uiworld, sim); + debug_window(ui, uiworld, sim); tooltip(ui, uiworld, sim); } diff --git a/native_app/src/gui/mod.rs b/native_app/src/gui/mod.rs index acbe9212..d69875ca 100644 --- a/native_app/src/gui/mod.rs +++ b/native_app/src/gui/mod.rs @@ -1,6 +1,6 @@ pub mod chat; pub mod debug_inspect; +pub mod debug_window; pub mod hud; -pub mod windows; pub use hud::*; diff --git a/native_app/src/gui/windows/mod.rs b/native_app/src/gui/windows/mod.rs deleted file mode 100644 index 2be4e469..00000000 --- a/native_app/src/gui/windows/mod.rs +++ /dev/null @@ -1,101 +0,0 @@ -use egui::Context; -use goryak::button_primary; - -use crate::inputmap::{InputAction, InputMap}; -use crate::uiworld::UiWorld; -use simulation::Simulation; - -pub mod debug; - -pub trait GUIWindow: Send + Sync { - fn render_window( - &mut self, - window: egui::Window<'_>, - ui: &Context, - uiworld: &UiWorld, - sim: &Simulation, - ); -} - -impl GUIWindow for F -where - F: Fn(egui::Window<'_>, &Context, &UiWorld, &Simulation) + Send + Sync, -{ - fn render_window( - &mut self, - window: egui::Window<'_>, - ui: &Context, - uiworld: &UiWorld, - sim: &Simulation, - ) { - self(window, ui, uiworld, sim); - } -} - -struct GUIWindowStruct { - w: Box, - name: &'static str, -} - -pub struct OldGUIWindows { - windows: Vec, - opened: Vec, -} - -impl Default for OldGUIWindows { - fn default() -> Self { - let mut s = Self { - windows: vec![], - opened: vec![], - }; - s.insert("Debug", debug::debug, false); - s - } -} - -impl OldGUIWindows { - pub fn insert(&mut self, name: &'static str, w: impl GUIWindow + 'static, opened: bool) { - self.windows.push(GUIWindowStruct { - w: Box::new(w), - name, - }); - if self.opened.len() < self.windows.len() { - self.opened.push(opened) - } - } - - pub fn menu(&mut self) { - if self.opened.len() < self.windows.len() { - self.opened - .extend(std::iter::repeat(false).take(self.windows.len() - self.opened.len())) - } - for (opened, w) in self.opened.iter_mut().zip(self.windows.iter()) { - if w.name == "Debug" { - continue; - } - - *opened ^= button_primary(w.name).show().clicked; - } - } - - pub fn render(&mut self, ui: &Context, uiworld: &UiWorld, sim: &Simulation) { - profiling::scope!("windows::render"); - if uiworld - .write::() - .just_act - .contains(&InputAction::OpenDebugMenu) - { - for (i, w) in self.windows.iter().enumerate() { - if w.name == "Debug" { - self.opened[i] ^= true; - } - } - } - - for (ws, opened) in self.windows.iter_mut().zip(self.opened.iter_mut()) { - if *opened { - ws.w.render_window(egui::Window::new(ws.name).open(opened), ui, uiworld, sim); - } - } - } -} diff --git a/native_app/src/init.rs b/native_app/src/init.rs index 71b91ce4..255a0f81 100644 --- a/native_app/src/init.rs +++ b/native_app/src/init.rs @@ -1,6 +1,6 @@ use crate::game_loop::Timings; use crate::gui::chat::GUIChatState; -use crate::gui::windows::debug::{DebugObjs, DebugState, TestFieldProperties}; +use crate::gui::debug_window::{DebugObjs, DebugState, TestFieldProperties}; use crate::inputmap::{Bindings, InputMap}; use crate::network::NetworkState; use crate::newgui::bulldozer::BulldozerState; diff --git a/native_app/src/newgui/hud/menu.rs b/native_app/src/newgui/hud/menu.rs index d2f7d6ae..0e635205 100644 --- a/native_app/src/newgui/hud/menu.rs +++ b/native_app/src/newgui/hud/menu.rs @@ -30,7 +30,6 @@ pub fn menu_bar(uiworld: &UiWorld, sim: &Simulation) { l.show(|| { let mut gui = uiworld.write::(); gui.windows.menu(); - gui.old_windows.menu(); save_window(&mut *gui, uiworld); textc( on_primary_container(), diff --git a/native_app/src/newgui/inspect/mod.rs b/native_app/src/newgui/inspect/mod.rs index 8c5e5783..cfb4dd1b 100644 --- a/native_app/src/newgui/inspect/mod.rs +++ b/native_app/src/newgui/inspect/mod.rs @@ -1,4 +1,4 @@ -use crate::gui::windows::debug::DebugState; +use crate::gui::debug_window::DebugState; use crate::newgui::follow::FollowEntity; use crate::newgui::{InspectedBuilding, InspectedEntity}; use crate::uiworld::UiWorld; diff --git a/native_app/src/newgui/mod.rs b/native_app/src/newgui/mod.rs index fc877979..b6008a12 100644 --- a/native_app/src/newgui/mod.rs +++ b/native_app/src/newgui/mod.rs @@ -1,4 +1,3 @@ -use crate::gui::windows::OldGUIWindows; use crate::newgui::windows::GUIWindows; use crate::uiworld::UiWorld; use simulation::map::BuildingID; @@ -135,7 +134,7 @@ impl Tool { } pub struct GuiState { - pub old_windows: OldGUIWindows, + pub debug_window: bool, pub windows: GUIWindows, pub last_save: Instant, pub last_gui_save: Instant, @@ -146,7 +145,7 @@ pub struct GuiState { impl Default for GuiState { fn default() -> Self { Self { - old_windows: OldGUIWindows::default(), + debug_window: false, windows: Default::default(), last_save: Instant::now(), last_gui_save: Instant::now(),