diff options
Diffstat (limited to 'src/window/ui.rs')
| -rw-r--r-- | src/window/ui.rs | 120 |
1 files changed, 0 insertions, 120 deletions
diff --git a/src/window/ui.rs b/src/window/ui.rs deleted file mode 100644 index 60cd795..0000000 --- a/src/window/ui.rs +++ /dev/null @@ -1,120 +0,0 @@ -use std::cell::RefCell; - -use cgmath::Vector3; - -use crate::{GameState, eguictx::EguiCtx, solar_system, timeman::{Second, TimeMan}}; - -#[derive(Default, Clone)] -pub struct GameWindowUiState -{ - pub current_system: Option<solar_system::SystemId>, - pub camera_scale: f32, - pub camera_pos: Option<cgmath::Point3<f32>>, - pub camera_target: Option<solar_system::BodyId>, - pub auto_time: Option<Second>, - pub do_auto_tick: bool -} - -impl GameWindowUiState -{ - pub fn render( - old_state: &GameWindowUiState, - game_state: &RefCell<GameState>, - eguictx: &EguiCtx) - -> Self - { - let mut new_state = old_state.clone(); - - { GameWindowUiState::render_topbar(&mut new_state, game_state, eguictx); } - - new_state - } - - fn render_topbar( - state: &mut GameWindowUiState, - game_state: &RefCell<GameState>, - eguictx: &EguiCtx) - { - let mut game_state = game_state.borrow_mut(); - - egui::TopBottomPanel::top("topbar").show( - eguictx.context(), - |ui| { - - ui.horizontal(|ui| { - let solar_systems = game_state.solar_systems(); - let selected_system_label = match state.current_system { - Some(id) => solar_systems[id].name(), - None => "" - }; - - egui::ComboBox::from_label("Current System") - .selected_text(selected_system_label) - .show_ui(ui, |ui| { - - for (i, system) in solar_systems.iter().enumerate() { - ui.selectable_value( - &mut state.current_system, - Some(i), - system.name() - ); - } - }); - - let current_system = match state.current_system { - Some(id) => &solar_systems[id], - None => return - }; - - let selected_body_label = match state.camera_target { - Some(id) => current_system.bodies()[id].name(), - None => "" - }; - - ui.separator(); - - egui::ComboBox::from_label("Camera Target") - .selected_text(selected_body_label) - .show_ui(ui, |ui| { - - for (i, body) in current_system.bodies().iter().enumerate() { - ui.selectable_value( - &mut state.camera_target, - Some(i), - body.name()); - } - }); - - match state.camera_pos { - Some(pos) => { ui.label(format!("Pos x{} y{} z{}", pos.x, pos.y, pos.z)); }, - None => {} - } - }); - - ui.horizontal(|ui| { - ui.label(format!("Time: {}", TimeMan::format_duration(game_state.timeman().seconds()))); - - let button_seconds = [1, 5, 30, 60, 60*5, 60*30, 60*60, 60*60*24, 60*60*24*5, 60*60*24*30]; - let selected_button = state.auto_time; - - button_seconds.iter().for_each(|&seconds| { - ui.vertical(|ui| { - let auto_selected = match selected_button { - Some(o) => o == seconds, - None => false - }; - let label = TimeMan::format_duration(seconds); - - if ui.button(label.clone()).clicked() { - game_state.timeman_mut().advance(seconds); - } - - if ui.add(egui::Button::new(label.clone()).selected(auto_selected)).clicked() { - state.auto_time = Some(seconds); - } - }); - }); - }); - }); - } -} |
