summaryrefslogtreecommitdiffstats
path: root/src/window.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/window.rs')
-rw-r--r--src/window.rs54
1 files changed, 29 insertions, 25 deletions
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<GameState>,
- _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(