Added debug menu

This commit is contained in:
Joey Hines 2024-09-08 14:02:20 -06:00
parent ab14a40993
commit a01417e4c8
No known key found for this signature in database
GPG Key ID: 995E531F7A569DDB
2 changed files with 76 additions and 7 deletions

View File

@ -3,14 +3,16 @@ use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize)]
pub struct DiscConfig {
id: usize,
disc: Vec<char>
disc: Vec<char>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct Config {
inner_disc: usize,
outer_disc: usize,
discs: Vec<DiscConfig>
pub inner_disc: usize,
pub outer_disc: usize,
pub inner_discs: Vec<usize>,
pub outer_discs: Vec<usize>,
pub discs: Vec<DiscConfig>,
}
impl Config {

View File

@ -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<String> = config
.inner_discs
.iter()
.map(|ndx| ndx.to_string())
.collect();
let outer_discs_combo: Vec<String> = 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::<Vec<&str>>(),
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::<Vec<&str>>(),
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;