Added debug menu
This commit is contained in:
parent
ab14a40993
commit
a01417e4c8
@ -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 {
|
||||
@ -25,4 +27,4 @@ impl Config {
|
||||
pub fn get_outer_disc(&self) -> Vec<char> {
|
||||
self.get_disc_from_id(self.outer_disc)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
71
src/main.rs
71
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<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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user