summaryrefslogtreecommitdiffstats
path: root/src/ui.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui.rs')
-rw-r--r--src/ui.rs29
1 files changed, 16 insertions, 13 deletions
diff --git a/src/ui.rs b/src/ui.rs
index 235481d..c2c4b05 100644
--- a/src/ui.rs
+++ b/src/ui.rs
@@ -15,8 +15,8 @@ use crate::ui::topbar::TopBarState;
pub struct State
{
pub camera_target: Option<BodyId>,
- pub topbar_sate: TopBarState,
+ pub topbar_sate: TopBarState,
pub bodies_window: BodiesWindowState,
pub fleet_window: FleetWindowState
}
@@ -30,31 +30,34 @@ impl State
{
let mut game_state = game_state.borrow_mut();
- let topbar_action = TopBarState::render(
- &mut self.topbar_sate,
+ let topbar_action = self.topbar_sate.paint(
+ eguictx,
&game_state,
- eguictx);
+ &self.bodies_window,
+ &self.fleet_window);
if let Some(by) = topbar_action.advance_tick {
game_state.timeman_mut().advance(by)
}
+ if topbar_action.toggle_bodies_window { self.bodies_window.open = !self.bodies_window.open; }
+ if topbar_action.toggle_fleets_window { self.fleet_window.open = !self.fleet_window.open; }
let current_system = match self.topbar_sate.current_system {
Some(id) => &game_state.solar_systems()[id],
None => return
};
- if self.topbar_sate.bodies_window_visible {
- let bodies_window_action =
- self.bodies_window.render(current_system, eguictx);
- if bodies_window_action.focus_body.is_some() {
- self.camera_target = bodies_window_action.focus_body;
- }
+ let bodies_window_action =
+ self.bodies_window.render(current_system, eguictx);
+ if bodies_window_action.focus_body.is_some() {
+ self.camera_target = bodies_window_action.focus_body;
}
- if self.topbar_sate.fleet_window_visible {
- let fleet_window_action =
- self.fleet_window.render(game_state.borrow(), eguictx);
+ let fleet_window_action =
+ self.fleet_window.paint(game_state.borrow(), eguictx, &self.camera_target);
+
+ if let Some(new_fleet) = fleet_window_action.new_fleet {
+ game_state.new_fleet_from_ui(new_fleet);
}
}
}