1
0
Fork 0
roguelike-game/src/gui/cheat_menu.rs

60 lines
1.6 KiB
Rust

use ::bracket_lib::prelude::*;
use super::{menu_box, menu_option};
use crate::{colors, State};
#[derive(PartialEq, Copy, Clone)]
pub enum CheatMenuResult {
NoResponse,
Cancel,
TeleportToExit,
Heal,
Reveal,
GodMode,
}
pub fn show_cheat_mode(_gs: &mut State, ctx: &mut BTerm) -> CheatMenuResult {
let mut draw_batch = DrawBatch::new();
let count = 4;
let mut y = (25 - (count / 2)) as i32;
menu_box(&mut draw_batch, 15, y, (count + 3) as i32, "Cheating!");
draw_batch.print_color(
Point::new(18, y + count as i32 + 1),
"ESCAPE to cancel",
ColorPair::new(colors::YELLOW, colors::BLACK),
);
menu_option(
&mut draw_batch,
17,
y,
to_cp437('T'),
"Teleport to next level",
);
y += 1;
menu_option(&mut draw_batch, 17, y, to_cp437('H'), "Heal all wounds");
y += 1;
menu_option(&mut draw_batch, 17, y, to_cp437('R'), "Reveal the map");
y += 1;
menu_option(&mut draw_batch, 17, y, to_cp437('G'), "God Mode (No Death)");
draw_batch
.submit(6000)
.expect("Failed to batch draw cheat menu");
match ctx.key {
None => CheatMenuResult::NoResponse,
Some(key) => match key {
VirtualKeyCode::T => CheatMenuResult::TeleportToExit,
VirtualKeyCode::H => CheatMenuResult::Heal,
VirtualKeyCode::R => CheatMenuResult::Reveal,
VirtualKeyCode::G => CheatMenuResult::GodMode,
VirtualKeyCode::Escape => CheatMenuResult::Cancel,
_ => CheatMenuResult::NoResponse,
},
}
}