71 lines
2.2 KiB
Rust
71 lines
2.2 KiB
Rust
|
use ::rltk::{Rltk, VirtualKeyCode};
|
||
|
|
||
|
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 Rltk) -> CheatMenuResult {
|
||
|
let count = 4;
|
||
|
let mut y = (25 - (count / 2)) as i32;
|
||
|
ctx.draw_box(
|
||
|
15,
|
||
|
y - 2,
|
||
|
31,
|
||
|
(count + 3) as i32,
|
||
|
colors::WHITE,
|
||
|
colors::BLACK,
|
||
|
);
|
||
|
ctx.print_color(18, y - 2, colors::YELLOW, colors::BLACK, "Cheating!");
|
||
|
ctx.print_color(
|
||
|
18,
|
||
|
y + count as i32 + 1,
|
||
|
colors::YELLOW,
|
||
|
colors::BLACK,
|
||
|
"ESCAPE to cancel",
|
||
|
);
|
||
|
|
||
|
ctx.set(17, y, colors::WHITE, colors::BLACK, rltk::to_cp437('('));
|
||
|
ctx.set(18, y, colors::YELLOW, colors::BLACK, rltk::to_cp437('T'));
|
||
|
ctx.set(19, y, colors::WHITE, colors::BLACK, rltk::to_cp437(')'));
|
||
|
|
||
|
ctx.print(21, y, "Teleport to next level");
|
||
|
|
||
|
y += 1;
|
||
|
ctx.set(17, y, colors::WHITE, colors::BLACK, rltk::to_cp437('('));
|
||
|
ctx.set(18, y, colors::YELLOW, colors::BLACK, rltk::to_cp437('H'));
|
||
|
ctx.set(19, y, colors::WHITE, colors::BLACK, rltk::to_cp437(')'));
|
||
|
ctx.print(21, y, "Heal all wounds");
|
||
|
|
||
|
y += 1;
|
||
|
ctx.set(17, y, colors::WHITE, colors::BLACK, rltk::to_cp437('('));
|
||
|
ctx.set(18, y, colors::YELLOW, colors::BLACK, rltk::to_cp437('R'));
|
||
|
ctx.set(19, y, colors::WHITE, colors::BLACK, rltk::to_cp437(')'));
|
||
|
ctx.print(21, y, "Reveal the map");
|
||
|
|
||
|
y += 1;
|
||
|
ctx.set(17, y, colors::WHITE, colors::BLACK, rltk::to_cp437('('));
|
||
|
ctx.set(18, y, colors::YELLOW, colors::BLACK, rltk::to_cp437('G'));
|
||
|
ctx.set(19, y, colors::WHITE, colors::BLACK, rltk::to_cp437(')'));
|
||
|
ctx.print(21, y, "God Mode (No Death)");
|
||
|
|
||
|
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,
|
||
|
},
|
||
|
}
|
||
|
}
|