wip: only show prompt

This commit is contained in:
briaguya 2024-06-05 05:51:41 -04:00
parent bec699f0bd
commit 084d55d855
3 changed files with 36 additions and 6 deletions

View File

@ -34,7 +34,7 @@
<!-- <handle move_target="#document"> --> <!-- <handle move_target="#document"> -->
<div id="window" class="rmlui-window rmlui-window--hidden" style="display:flex; flex-flow: column; background-color:rgba(0,0,0,0)" onkeydown="config_keydown"> <div id="window" class="rmlui-window rmlui-window--hidden" style="display:flex; flex-flow: column; background-color:rgba(0,0,0,0)" onkeydown="config_keydown">
<div class="centered-page" onclick="close_config_menu_backdrop"> <div class="centered-page" onclick="close_config_menu_backdrop">
<div class="centered-page__modal"> <div data-model="config_menu_model" data-visible="!hide_for_prompt" class="centered-page__modal">
<tabset class="tabs" id="config_tabset"> <tabset class="tabs" id="config_tabset">
<tab class="tab" autofocus id="tab_general"> <tab class="tab" autofocus id="tab_general">
<div>General</div> <div>General</div>

View File

@ -155,10 +155,6 @@ bool sdl_event_filter(void* userdata, SDL_Event* event) {
return true; return true;
} }
if (recompui::get_current_menu() != recompui::Menu::Config) {
recompui::set_current_menu(recompui::Menu::Config);
}
zelda64::open_quit_game_prompt(); zelda64::open_quit_game_prompt();
recompui::activate_mouse(); recompui::activate_mouse();
break; break;

View File

@ -10,6 +10,7 @@
#include "ultramodern/rt64_layer.hpp" #include "ultramodern/rt64_layer.hpp"
ultramodern::GraphicsConfig new_options; ultramodern::GraphicsConfig new_options;
Rml::DataModelHandle config_menu_model_handle;
Rml::DataModelHandle nav_help_model_handle; Rml::DataModelHandle nav_help_model_handle;
Rml::DataModelHandle general_model_handle; Rml::DataModelHandle general_model_handle;
Rml::DataModelHandle controls_model_handle; Rml::DataModelHandle controls_model_handle;
@ -18,6 +19,19 @@ Rml::DataModelHandle sound_options_model_handle;
recompui::PromptContext prompt_context; recompui::PromptContext prompt_context;
struct ConfigMenuContext {
bool hide_for_prompt;
void reset() {
hide_for_prompt = false;
}
ConfigMenuContext() {
reset();
}
};
ConfigMenuContext config_menu_context;
namespace recompui { namespace recompui {
const std::unordered_map<ButtonVariant, std::string> button_variants { const std::unordered_map<ButtonVariant, std::string> button_variants {
{ButtonVariant::Primary, "primary"}, {ButtonVariant::Primary, "primary"},
@ -252,7 +266,17 @@ void close_config_menu() {
close_config_menu_impl(); close_config_menu_impl();
} }
bool menuWasOpenBeforeOpeningPrompt = false;
void zelda64::open_quit_game_prompt() { void zelda64::open_quit_game_prompt() {
menuWasOpenBeforeOpeningPrompt = true;
if (recompui::get_current_menu() != recompui::Menu::Config) {
recompui::set_current_menu(recompui::Menu::Config);
menuWasOpenBeforeOpeningPrompt = false;
}
config_menu_context.hide_for_prompt = !menuWasOpenBeforeOpeningPrompt;
config_menu_model_handle.DirtyVariable("hide_for_prompt");
prompt_context.open_prompt( prompt_context.open_prompt(
"Are you sure you want to quit?", "Are you sure you want to quit?",
"Any progress since your last save will be lost.", "Any progress since your last save will be lost.",
@ -261,7 +285,13 @@ void zelda64::open_quit_game_prompt() {
[]() { []() {
ultramodern::quit(); ultramodern::quit();
}, },
[]() {}, []() {
if (!menuWasOpenBeforeOpeningPrompt) {
recompui::set_current_menu(recompui::Menu::None);
}
config_menu_context.hide_for_prompt = false;
config_menu_model_handle.DirtyVariable("hide_for_prompt");
},
recompui::ButtonVariant::Error, recompui::ButtonVariant::Error,
recompui::ButtonVariant::Tertiary, recompui::ButtonVariant::Tertiary,
true, true,
@ -972,6 +1002,10 @@ public:
} }
void make_bindings(Rml::Context* context) override { void make_bindings(Rml::Context* context) override {
Rml::DataModelConstructor constructor = context->CreateDataModel("config_menu_model");
constructor.Bind("hide_for_prompt", &config_menu_context.hide_for_prompt);
config_menu_model_handle = constructor.GetModelHandle();
// initially set cont state for ui help // initially set cont state for ui help
recomp::config_menu_set_cont_or_kb(recompui::get_cont_active()); recomp::config_menu_set_cont_or_kb(recompui::get_cont_active());
make_nav_help_bindings(context); make_nav_help_bindings(context);