From 0b428d94e751dc4a5fbe19418bfb5994cebfa54c Mon Sep 17 00:00:00 2001 From: Jon Santmyer Date: Sun, 24 May 2026 13:04:10 -0400 Subject: major ui rework --- src/window.rs | 54 +++++++++++++++++++++++++++++------------------------- 1 file changed, 29 insertions(+), 25 deletions(-) (limited to 'src/window.rs') diff --git a/src/window.rs b/src/window.rs index 18021f4..4642c13 100644 --- a/src/window.rs +++ b/src/window.rs @@ -6,6 +6,7 @@ use winit::event::{ElementState, WindowEvent}; use winit::keyboard::KeyCode; use crate::tacmap::TacticalMap; +use crate::ui::contact::MapContact; use crate::{GameState, ui}; use crate::wgpuctx::{RenderPassBuilder, SceneCtx, WgpuCtx}; use crate::eguictx::EguiCtx; @@ -37,15 +38,15 @@ impl GameWindow let wgpuctx = pollster::block_on(WgpuCtx::new(instance, window.clone())); let eguictx = EguiCtx::new(&window, &wgpuctx); + ui::set_theme(eguictx.context()); let tacmap = TacticalMap::new(&wgpuctx); let ui_state = ui::State{ - camera_target: Some(0), - topbar_sate: ui::topbar::TopBarState { - current_system : Some(0), - ..Default::default() - }, + current_system: Some(0), + camera_target: Some(MapContact::from_body(0)), + auto_tick: (false, 1), + manual_tick: 1, ..Default::default() }; @@ -65,20 +66,21 @@ impl GameWindow dt: Duration) { let mut game_state = game_state.borrow_mut(); - if self.ui_state.topbar_sate.do_auto_tick { - game_state.timeman.auto_tick = self.ui_state.topbar_sate.auto_tick; - }else{ - game_state.timeman.auto_tick = None; - } + + game_state.timeman.auto_tick = match self.ui_state.auto_tick.0 { + true => Some(self.ui_state.auto_tick.1), + false => None + }; - let current_system = match self.ui_state.topbar_sate.current_system { + let current_system = match self.ui_state.current_system { Some(id) => &game_state.solar_systems()[id], None => { return; } }; self.tactical_map.update( - current_system, - &mut self.ui_state, + current_system, + game_state.fleets(), + &mut self.ui_state, game_state.timeman().seconds(), dt); } @@ -94,7 +96,8 @@ impl GameWindow pub fn render( &mut self, game_state: &RefCell, - _egui_event_resp: egui_winit::EventResponse) + _egui_event_resp: egui_winit::EventResponse, + dt: Duration) -> Result<(), wgpu::CurrentSurfaceTexture> { if !self.wgpuctx.is_ready() { return Ok(()); @@ -108,7 +111,7 @@ impl GameWindow let mut scene = SceneCtx::from_view_default(&self.wgpuctx, &view, Some("Systemic window scene")); self.eguictx.prepare(&self.window); - + egui::Window::new("Systemic 4X") .fixed_rect(egui::Rect::from_min_size(egui::pos2(0.0, 0.0), screen_size)) .resizable(false) @@ -120,10 +123,10 @@ impl GameWindow |ui| { self.ui_state.paint(game_state, ui); - if self.ui_state.topbar_sate.current_system.is_some() { + if self.ui_state.current_system.is_some() { let game_state = game_state.borrow(); let fleets_manager = game_state.fleets(); - let current_system = &game_state.solar_systems()[self.ui_state.topbar_sate.current_system.unwrap()]; + let current_system = &game_state.solar_systems()[self.ui_state.current_system.unwrap()]; egui::CentralPanel::no_frame().show_inside(ui, |central_panel| { let panel_rect = central_panel.max_rect(); @@ -137,7 +140,8 @@ impl GameWindow &self.wgpuctx, fleets_manager, current_system, - game_state.timeman()) + game_state.timeman(), + dt) { Ok(_) => {}, Err(_) => { @@ -145,6 +149,13 @@ impl GameWindow panic!(); } } + + self.tactical_map.paint_labels( + current_system, + game_state.timeman().seconds(), + &panel_rect, + central_panel + ); }); let mut pass = RenderPassBuilder::new(Some("Systemic window render pass"), &view) @@ -153,13 +164,6 @@ impl GameWindow //Draw the tactical map canvas. self.tactical_map.paint(&mut pass); - - self.tactical_map.paint_labels( - current_system, - game_state.timeman().seconds(), - screen_size, - ui - ); } }); self.eguictx.present( -- cgit v1.2.3