From a01417e4c8c2f019ff712980166f570f471a5a12 Mon Sep 17 00:00:00 2001 From: Joey Hines Date: Sun, 8 Sep 2024 14:02:20 -0600 Subject: [PATCH] Added debug menu --- src/config.rs | 12 +++++---- src/main.rs | 71 +++++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 76 insertions(+), 7 deletions(-) diff --git a/src/config.rs b/src/config.rs index e30b459..935454a 100644 --- a/src/config.rs +++ b/src/config.rs @@ -3,14 +3,16 @@ use serde::{Deserialize, Serialize}; #[derive(Debug, Serialize, Deserialize)] pub struct DiscConfig { id: usize, - disc: Vec + disc: Vec, } #[derive(Debug, Serialize, Deserialize)] pub struct Config { - inner_disc: usize, - outer_disc: usize, - discs: Vec + pub inner_disc: usize, + pub outer_disc: usize, + pub inner_discs: Vec, + pub outer_discs: Vec, + pub discs: Vec, } impl Config { @@ -25,4 +27,4 @@ impl Config { pub fn get_outer_disc(&self) -> Vec { self.get_disc_from_id(self.outer_disc) } -} \ No newline at end of file +} diff --git a/src/main.rs b/src/main.rs index 0875d35..f77ac51 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,11 +1,14 @@ -mod disc; mod config; +mod disc; +use crate::config::Config; use crate::disc::{DecoderState, Disc}; +use macroquad::hash; use macroquad::prelude::*; +use macroquad::ui::root_ui; +use macroquad::ui::widgets::{Group, Window}; use std::f32::consts::PI; use std::string::ToString; -use crate::config::Config; const SHADOW: Color = Color::new(0.25, 0.25, 0.25, 0.5); @@ -534,6 +537,68 @@ fn input_panel(ctx: &mut Context, base: Vec2, size: Vec2) { } } +pub fn draw_config_menu(ctx: &mut Context, config: &Config) { + let inner_discs_combo: Vec = config + .inner_discs + .iter() + .map(|ndx| ndx.to_string()) + .collect(); + let outer_discs_combo: Vec = config + .outer_discs + .iter() + .map(|ndx| ndx.to_string()) + .collect(); + + let window_size = Vec2::new(screen_width() * 0.10, screen_width() * 0.10); + + let group_size = Vec2::new(window_size.x, window_size.y * 0.3); + + Window::new( + hash!("Config"), + window_size, + Vec2::new(screen_width() * 0.15, screen_height() * 0.20), + ) + .label("Device Config") + .titlebar(true) + .ui(&mut root_ui(), |ui| { + Group::new(hash!("Inner disc"), group_size).ui(ui, |ui| { + let inner_disc_ndx = ui.combo_box( + hash!("Outer disc Select"), + "Inner Disc ID", + &inner_discs_combo + .iter() + .map(|s| s.as_str()) + .collect::>(), + None, + ); + let inner_disc = config.get_disc_from_id(config.inner_discs[inner_disc_ndx]); + ctx.decoder_state.inner_disc.letter_map = inner_disc; + }); + + Group::new(hash!("Outer disc"), group_size).ui(ui, |ui| { + let outer_disc_ndx = ui.combo_box( + hash!("Outer disc select"), + "Outer Disc ID", + &outer_discs_combo + .iter() + .map(|s| s.as_str()) + .collect::>(), + None, + ); + let outer_disc = config.get_disc_from_id(config.outer_discs[outer_disc_ndx]); + ctx.decoder_state.outer_disc.letter_map = outer_disc; + }); + + Group::new(hash!("Reset"), group_size).ui(ui, |ui| { + if ui.button(Vec2::new(0.0, 0.0), "Reset") { + ctx.decoder_state.set_index(0); + ctx.input_state + .set_index(ctx.input_state.outer_disc.letter_map.len() / 4); + } + }); + }); +} + #[macroquad::main(conf)] async fn main() { game_init(); @@ -559,6 +624,8 @@ async fn main() { loop { clear_background(WHITE); + draw_config_menu(&mut context, &config); + draw_device(&mut context); next_frame().await;