mirror of
				https://github.com/Zelda64Recomp/Zelda64Recomp.git
				synced 2025-10-30 08:03:03 +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