mirror of
https://github.com/Mr-Wiseguy/Zelda64Recomp.git
synced 2025-04-07 05:56:53 +02:00
Reimplement mechanism to open the config menu to a specific tab
This commit is contained in:
parent
df976293eb
commit
dc490ccaf0
@ -57,6 +57,17 @@ namespace recompui {
|
||||
ContextId get_config_sub_menu_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 {
|
||||
Primary,
|
||||
Secondary,
|
||||
|
@ -978,3 +978,44 @@ void recompui::open_prompt(
|
||||
bool recompui::is_prompt_open() {
|
||||
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);
|
||||
}
|
||||
|
@ -92,20 +92,23 @@ public:
|
||||
);
|
||||
recompui::register_event(listener, "open_controls",
|
||||
[](const std::string& param, Rml::Event& event) {
|
||||
recompui::set_config_tab(recompui::ConfigTab::Controls);
|
||||
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",
|
||||
[](const std::string& param, Rml::Event& event) {
|
||||
recompui::set_config_tab(recompui::ConfigTab::General);
|
||||
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",
|
||||
[](const std::string ¶m, Rml::Event &event) {
|
||||
recompui::set_config_tab(recompui::ConfigTab::Mods);
|
||||
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",
|
||||
|
Loading…
x
Reference in New Issue
Block a user