mirror of
https://github.com/Zelda64Recomp/Zelda64Recomp.git
synced 2026-04-27 20:51:40 +00:00
Reimplement mechanism to open the config menu to a specific tab
This commit is contained in:
parent
0a596746a7
commit
9dccbfaf8c
3 changed files with 58 additions and 3 deletions
|
|
@ -57,6 +57,17 @@ namespace recompui {
|
||||||
ContextId get_config_sub_menu_context_id();
|
ContextId get_config_sub_menu_context_id();
|
||||||
ContextId get_close_prompt_context_id();
|
ContextId get_close_prompt_context_id();
|
||||||
|
|
||||||
|
enum class ConfigTab {
|
||||||
|
General,
|
||||||
|
Controls,
|
||||||
|
Graphics,
|
||||||
|
Sound,
|
||||||
|
Mods,
|
||||||
|
Debug,
|
||||||
|
};
|
||||||
|
|
||||||
|
void set_config_tab(ConfigTab tab);
|
||||||
|
|
||||||
enum class ButtonVariant {
|
enum class ButtonVariant {
|
||||||
Primary,
|
Primary,
|
||||||
Secondary,
|
Secondary,
|
||||||
|
|
|
||||||
|
|
@ -979,3 +979,44 @@ void recompui::open_prompt(
|
||||||
bool recompui::is_prompt_open() {
|
bool recompui::is_prompt_open() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void recompui::set_config_tab(ConfigTab tab) {
|
||||||
|
ContextId config_context = recompui::get_config_context_id();
|
||||||
|
|
||||||
|
Rml::ElementDocument* doc = config_context.get_document();
|
||||||
|
assert(doc != nullptr);
|
||||||
|
|
||||||
|
Rml::Element* tabset_el = doc->GetElementById("config_tabset");
|
||||||
|
assert(tabset_el != nullptr);
|
||||||
|
|
||||||
|
Rml::ElementTabSet* tabset = rmlui_dynamic_cast<Rml::ElementTabSet*>(tabset_el);
|
||||||
|
assert(tabset != nullptr);
|
||||||
|
|
||||||
|
int tab_index = 0;
|
||||||
|
|
||||||
|
switch (tab) {
|
||||||
|
case ConfigTab::General:
|
||||||
|
tab_index = 0;
|
||||||
|
break;
|
||||||
|
case ConfigTab::Controls:
|
||||||
|
tab_index = 1;
|
||||||
|
break;
|
||||||
|
case ConfigTab::Graphics:
|
||||||
|
tab_index = 2;
|
||||||
|
break;
|
||||||
|
case ConfigTab::Sound:
|
||||||
|
tab_index = 3;
|
||||||
|
break;
|
||||||
|
case ConfigTab::Mods:
|
||||||
|
tab_index = 4;
|
||||||
|
break;
|
||||||
|
case ConfigTab::Debug:
|
||||||
|
tab_index = 5;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
assert(false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
tabset->SetActiveTab(tab_index);
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -88,20 +88,23 @@ public:
|
||||||
);
|
);
|
||||||
recompui::register_event(listener, "open_controls",
|
recompui::register_event(listener, "open_controls",
|
||||||
[](const std::string& param, Rml::Event& event) {
|
[](const std::string& param, Rml::Event& event) {
|
||||||
|
recompui::set_config_tab(recompui::ConfigTab::Controls);
|
||||||
recompui::hide_all_contexts();
|
recompui::hide_all_contexts();
|
||||||
recompui::show_context(recompui::get_config_context_id(), "controls");
|
recompui::show_context(recompui::get_config_context_id(), "");
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
recompui::register_event(listener, "open_settings",
|
recompui::register_event(listener, "open_settings",
|
||||||
[](const std::string& param, Rml::Event& event) {
|
[](const std::string& param, Rml::Event& event) {
|
||||||
|
recompui::set_config_tab(recompui::ConfigTab::General);
|
||||||
recompui::hide_all_contexts();
|
recompui::hide_all_contexts();
|
||||||
recompui::show_context(recompui::get_config_context_id(), "general");
|
recompui::show_context(recompui::get_config_context_id(), "");
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
recompui::register_event(listener, "open_mods",
|
recompui::register_event(listener, "open_mods",
|
||||||
[](const std::string ¶m, Rml::Event &event) {
|
[](const std::string ¶m, Rml::Event &event) {
|
||||||
|
recompui::set_config_tab(recompui::ConfigTab::Mods);
|
||||||
recompui::hide_all_contexts();
|
recompui::hide_all_contexts();
|
||||||
recompui::show_context(recompui::get_config_context_id(), "mods");
|
recompui::show_context(recompui::get_config_context_id(), "");
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
recompui::register_event(listener, "exit_game",
|
recompui::register_event(listener, "exit_game",
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue