diff --git a/crates/render/src/ui/manager.rs b/crates/render/src/ui/manager.rs index ee1778a..6ee49b5 100644 --- a/crates/render/src/ui/manager.rs +++ b/crates/render/src/ui/manager.rs @@ -1,17 +1,21 @@ +use galactica_content::Content; +use galactica_system::{data::ShipState, phys::PhysSimShipHandle}; use glyphon::TextArea; -use super::{fpsindicator::FpsIndicator, radar::Radar, status::Status}; -use crate::{datastructs::RenderState, RenderInput}; +use super::{fpsindicator::FpsIndicator, planet::Planet, radar::Radar, status::Status}; +use crate::{RenderInput, RenderState}; pub struct UiManager { radar: Radar, status: Status, fps: FpsIndicator, + planet: Planet, } impl UiManager { - pub fn new(state: &mut RenderState) -> Self { + pub fn new(ct: &Content, state: &mut RenderState) -> Self { Self { + planet: Planet::new(ct, state), radar: Radar::new(), status: Status::new(), fps: FpsIndicator::new(state), @@ -20,12 +24,48 @@ impl UiManager { /// Draw all ui elements pub fn draw(&mut self, input: &RenderInput, state: &mut RenderState) { - self.radar.draw(input, state); - self.status.draw(input, state); + let ship_handle = input.player.ship.unwrap(); + let ship = input + .systemsim + .get_ship(&PhysSimShipHandle(ship_handle)) + .unwrap(); + self.fps.update(input, state); + + match ship.data.get_state() { + ShipState::Collapsing + | ShipState::Dead + | ShipState::Flying { .. } + | ShipState::Landing { .. } + | ShipState::UnLanding { .. } => { + self.radar.draw(input, state); + self.status.draw(input, state); + } + + ShipState::Landed { .. } => { + self.planet.draw(input, state); + } + } } - pub fn get_textareas(&self) -> [TextArea; 1] { - [self.fps.get_textarea()] + pub fn get_textareas(&self, input: &RenderInput, state: &RenderState) -> Vec