2022-02-04 14:09:48 -05:00
|
|
|
use ::bracket_lib::prelude::*;
|
2022-02-02 09:45:19 -05:00
|
|
|
|
2022-02-02 11:52:19 -05:00
|
|
|
use super::{menu_box, menu_option};
|
2022-02-02 09:45:19 -05:00
|
|
|
use crate::{colors, State};
|
|
|
|
|
|
|
|
#[derive(PartialEq, Copy, Clone)]
|
|
|
|
pub enum CheatMenuResult {
|
|
|
|
NoResponse,
|
|
|
|
Cancel,
|
|
|
|
TeleportToExit,
|
|
|
|
Heal,
|
|
|
|
Reveal,
|
|
|
|
GodMode,
|
|
|
|
}
|
|
|
|
|
2022-02-04 14:09:48 -05:00
|
|
|
pub fn show_cheat_mode(_gs: &mut State, ctx: &mut BTerm) -> CheatMenuResult {
|
2022-02-02 11:52:19 -05:00
|
|
|
let mut draw_batch = DrawBatch::new();
|
2022-02-02 09:45:19 -05:00
|
|
|
let count = 4;
|
|
|
|
let mut y = (25 - (count / 2)) as i32;
|
2022-02-02 11:52:19 -05:00
|
|
|
menu_box(&mut draw_batch, 15, y, (count + 3) as i32, "Cheating!");
|
|
|
|
draw_batch.print_color(
|
|
|
|
Point::new(18, y + count as i32 + 1),
|
2022-02-02 09:45:19 -05:00
|
|
|
"ESCAPE to cancel",
|
2022-02-02 11:52:19 -05:00
|
|
|
ColorPair::new(colors::YELLOW, colors::BLACK),
|
2022-02-02 09:45:19 -05:00
|
|
|
);
|
|
|
|
|
2022-02-02 11:52:19 -05:00
|
|
|
menu_option(
|
|
|
|
&mut draw_batch,
|
|
|
|
17,
|
|
|
|
y,
|
|
|
|
to_cp437('T'),
|
|
|
|
"Teleport to next level",
|
|
|
|
);
|
2022-02-02 09:45:19 -05:00
|
|
|
y += 1;
|
|
|
|
|
2022-02-02 11:52:19 -05:00
|
|
|
menu_option(&mut draw_batch, 17, y, to_cp437('H'), "Heal all wounds");
|
2022-02-02 09:45:19 -05:00
|
|
|
y += 1;
|
|
|
|
|
2022-02-02 11:52:19 -05:00
|
|
|
menu_option(&mut draw_batch, 17, y, to_cp437('R'), "Reveal the map");
|
2022-02-02 09:45:19 -05:00
|
|
|
y += 1;
|
2022-02-02 11:52:19 -05:00
|
|
|
|
|
|
|
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");
|
2022-02-02 09:45:19 -05:00
|
|
|
|
|
|
|
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,
|
|
|
|
},
|
|
|
|
}
|
|
|
|
}
|