diff options
Diffstat (limited to 'src/ui.rs')
| -rw-r--r-- | src/ui.rs | 29 |
1 files changed, 16 insertions, 13 deletions
@@ -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); } } } |
