There's now a GUI that shows up when you interact with stairs down.

This commit is contained in:
Zed A. Shaw 2025-01-16 15:33:24 -05:00
parent e63a8dd920
commit 269af02993
3 changed files with 41 additions and 0 deletions

24
gui.cpp
View file

@ -30,6 +30,24 @@ using namespace std::chrono_literals;
using namespace ftxui;
using namespace components;
void NextLevelUI::create_render() {
has_border = true;
$no_button = Button("NO, I'M NOT", []{ fmt::println("no don't go down"); });
$yes_button = Button("YES, I'M READY", []{ fmt::println("Going down."); });
$render = Renderer([&] {
return vflow({
paragraph($message) | border,
$no_button->Render(),
$yes_button->Render()
}) | flex;
});
set_renderer($render);
add($yes_button);
add($no_button);
}
void DeathUI::create_render() {
has_border = true;
$exit_button = Button("EXIT", []{ std::exit(0); });
@ -211,6 +229,7 @@ void GUI::create_renderer() {
$status_ui.create_render();
$inventory_ui.create_render();
$death_ui.create_render();
$next_level_ui.create_render();
$active_panels = {&$map_view, &$status_ui};
}
@ -269,6 +288,7 @@ void GUI::handle_world_events() {
auto& device = std::any_cast<Device&>(data);
$status_ui.log(format("Up stairs has test {}.",
(bool)device.config["test"]));
toggle_modal(&$next_level_ui, $next_level);
} break;
default:
$status_ui.log(format("INVALID EVENT! {},{}", evt, entity));
@ -441,6 +461,10 @@ void GUI::render_scene() {
draw_paused();
$death_ui.render();
$renderer.draw($death_ui);
} else if($next_level) {
draw_paused();
$next_level_ui.render();
$renderer.draw($next_level_ui);
} else {
$map_view.render();
$renderer.draw($map_view);