Hooked up controls and settings buttons in launcher
This commit is contained in:
parent
15ce3b194d
commit
0fcc366a35
|
@ -31,7 +31,7 @@
|
||||||
<!-- <handle move_target="#document"> -->
|
<!-- <handle move_target="#document"> -->
|
||||||
<div id="window" style="display:flex; flex-flow: column; background-color:rgba(0,0,0,0)">
|
<div id="window" style="display:flex; flex-flow: column; background-color:rgba(0,0,0,0)">
|
||||||
<div class="centered-page">
|
<div class="centered-page">
|
||||||
<tabset class="centered-page__modal tabs">
|
<tabset class="centered-page__modal tabs" id="config_tabset">
|
||||||
<tab class="tab" id="tab_graphics" autofocus>
|
<tab class="tab" id="tab_graphics" autofocus>
|
||||||
<div>Graphics</div>
|
<div>Graphics</div>
|
||||||
<div class="tab__indicator"></div>
|
<div class="tab__indicator"></div>
|
||||||
|
|
|
@ -36,11 +36,11 @@
|
||||||
<div class="menu-list-item__bullet">•</div>
|
<div class="menu-list-item__bullet">•</div>
|
||||||
<div class="menu-list-item__label">Start game</div>
|
<div class="menu-list-item__label">Start game</div>
|
||||||
</button>
|
</button>
|
||||||
<button class="menu-list-item menu-list-item--right">
|
<button onclick="open_controls" class="menu-list-item menu-list-item--right">
|
||||||
<div class="menu-list-item__bullet">•</div>
|
<div class="menu-list-item__bullet">•</div>
|
||||||
<div class="menu-list-item__label">Setup controls</div>
|
<div class="menu-list-item__label">Setup controls</div>
|
||||||
</button>
|
</button>
|
||||||
<button class="menu-list-item menu-list-item--right">
|
<button onclick="open_settings" class="menu-list-item menu-list-item--right">
|
||||||
<div class="menu-list-item__bullet">•</div>
|
<div class="menu-list-item__bullet">•</div>
|
||||||
<div class="menu-list-item__label">Settings</div>
|
<div class="menu-list-item__label">Settings</div>
|
||||||
</button>
|
</button>
|
||||||
|
|
|
@ -42,6 +42,16 @@ namespace recomp {
|
||||||
};
|
};
|
||||||
|
|
||||||
void set_current_menu(Menu menu);
|
void set_current_menu(Menu menu);
|
||||||
|
|
||||||
|
enum class ConfigSubmenu {
|
||||||
|
Graphics,
|
||||||
|
Controls,
|
||||||
|
Audio,
|
||||||
|
Count
|
||||||
|
};
|
||||||
|
|
||||||
|
void set_config_submenu(ConfigSubmenu submenu);
|
||||||
|
|
||||||
void destroy_ui();
|
void destroy_ui();
|
||||||
void apply_color_hack();
|
void apply_color_hack();
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,6 +17,17 @@ public:
|
||||||
recomp::register_event(listener, "start_game",
|
recomp::register_event(listener, "start_game",
|
||||||
[](const std::string& param, Rml::Event& event) {
|
[](const std::string& param, Rml::Event& event) {
|
||||||
ultramodern::start_game(0);
|
ultramodern::start_game(0);
|
||||||
|
recomp::set_current_menu(recomp::Menu::None);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
recomp::register_event(listener, "open_controls",
|
||||||
|
[](const std::string& param, Rml::Event& event) {
|
||||||
|
recomp::set_current_menu(recomp::Menu::Config);
|
||||||
|
recomp::set_config_submenu(recomp::ConfigSubmenu::Controls);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
recomp::register_event(listener, "open_settings",
|
||||||
|
[](const std::string& param, Rml::Event& event) {
|
||||||
recomp::set_current_menu(recomp::Menu::Config);
|
recomp::set_current_menu(recomp::Menu::Config);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
|
@ -665,6 +665,18 @@ struct {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void swap_config_menu(recomp::ConfigSubmenu submenu) {
|
||||||
|
if (current_document != nullptr) {
|
||||||
|
Rml::Element* config_tabset_base = current_document->GetElementById("config_tabset");
|
||||||
|
if (config_tabset_base != nullptr) {
|
||||||
|
Rml::ElementTabSet* config_tabset = rmlui_dynamic_cast<Rml::ElementTabSet*>(config_tabset_base);
|
||||||
|
if (config_tabset != nullptr) {
|
||||||
|
config_tabset->SetActiveTab(static_cast<int>(submenu));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void load_documents() {
|
void load_documents() {
|
||||||
if (!documents.empty()) {
|
if (!documents.empty()) {
|
||||||
Rml::Factory::RegisterEventListenerInstancer(nullptr);
|
Rml::Factory::RegisterEventListenerInstancer(nullptr);
|
||||||
|
@ -703,6 +715,9 @@ struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
void update_focus(bool mouse_moved) {
|
void update_focus(bool mouse_moved) {
|
||||||
|
if (current_document == nullptr) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
Rml::Element* focused = current_document->GetFocusLeafNode();
|
Rml::Element* focused = current_document->GetFocusLeafNode();
|
||||||
|
|
||||||
// If there was mouse motion, get the current hovered element (or its target if it points to one) and focus that if applicable.
|
// If there was mouse motion, get the current hovered element (or its target if it points to one) and focus that if applicable.
|
||||||
|
@ -817,6 +832,7 @@ bool recomp::try_deque_event(SDL_Event& out) {
|
||||||
}
|
}
|
||||||
|
|
||||||
std::atomic<recomp::Menu> open_menu = recomp::Menu::Launcher;
|
std::atomic<recomp::Menu> open_menu = recomp::Menu::Launcher;
|
||||||
|
std::atomic<recomp::ConfigSubmenu> open_config_submenu = recomp::ConfigSubmenu::Count;
|
||||||
|
|
||||||
void draw_hook(RT64::RenderCommandList* command_list, RT64::RenderTexture* swap_chain_texture) {
|
void draw_hook(RT64::RenderCommandList* command_list, RT64::RenderTexture* swap_chain_texture) {
|
||||||
int num_keys;
|
int num_keys;
|
||||||
|
@ -839,6 +855,12 @@ void draw_hook(RT64::RenderCommandList* command_list, RT64::RenderTexture* swap_
|
||||||
UIContext.rml.swap_document(cur_menu);
|
UIContext.rml.swap_document(cur_menu);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
recomp::ConfigSubmenu config_submenu = open_config_submenu.load();
|
||||||
|
if (config_submenu != recomp::ConfigSubmenu::Count) {
|
||||||
|
UIContext.rml.swap_config_menu(config_submenu);
|
||||||
|
open_config_submenu.store(recomp::ConfigSubmenu::Count);
|
||||||
|
}
|
||||||
|
|
||||||
prev_menu = cur_menu;
|
prev_menu = cur_menu;
|
||||||
|
|
||||||
SDL_Event cur_event{};
|
SDL_Event cur_event{};
|
||||||
|
@ -896,6 +918,10 @@ void recomp::set_current_menu(Menu menu) {
|
||||||
open_menu.store(menu);
|
open_menu.store(menu);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void recomp::set_config_submenu(recomp::ConfigSubmenu submenu) {
|
||||||
|
open_config_submenu.store(submenu);
|
||||||
|
}
|
||||||
|
|
||||||
void recomp::destroy_ui() {
|
void recomp::destroy_ui() {
|
||||||
Rml::Shutdown();
|
Rml::Shutdown();
|
||||||
UIContext.rml.unload();
|
UIContext.rml.unload();
|
||||||
|
|
Loading…
Reference in New Issue