From 667cf70fa02af535b27380332c7e38c4b3362e8f Mon Sep 17 00:00:00 2001 From: MelonSpeedruns Date: Thu, 7 May 2026 12:01:32 -0400 Subject: [PATCH 1/2] Add Advanced Settings option & Disable debug hotkeys if it's off --- include/dusk/settings.h | 1 + src/dusk/imgui/ImGuiAudio.cpp | 8 ++++++-- src/dusk/imgui/ImGuiCameraOverlay.cpp | 4 +++- src/dusk/imgui/ImGuiConsole.cpp | 6 +++++- src/dusk/imgui/ImGuiHeapOverlay.cpp | 4 +++- src/dusk/imgui/ImGuiMapLoader.cpp | 4 +++- src/dusk/imgui/ImGuiMenuTools.cpp | 8 ++++++-- src/dusk/imgui/ImGuiProcessOverlay.cpp | 4 +++- src/dusk/imgui/ImGuiStateShare.cpp | 4 +++- src/dusk/settings.cpp | 4 +++- src/dusk/ui/settings.cpp | 6 ++++++ 11 files changed, 42 insertions(+), 11 deletions(-) diff --git a/include/dusk/settings.h b/include/dusk/settings.h index 992a52999c..584f75b4ef 100644 --- a/include/dusk/settings.h +++ b/include/dusk/settings.h @@ -169,6 +169,7 @@ struct UserSettings { ConfigVar wasPresetChosen; ConfigVar enableCrashReporting; ConfigVar cardFileType; + ConfigVar enableAdvancedSettings; } backend; }; diff --git a/src/dusk/imgui/ImGuiAudio.cpp b/src/dusk/imgui/ImGuiAudio.cpp index 6bddc6f07c..ce9290efa5 100644 --- a/src/dusk/imgui/ImGuiAudio.cpp +++ b/src/dusk/imgui/ImGuiAudio.cpp @@ -282,7 +282,9 @@ static void ShowAllJAISeqs() { } void dusk::ImGuiMenuTools::ShowAudioDebug() { - if (!ImGuiConsole::CheckMenuViewToggle(ImGuiKey_F10, m_showAudioDebug)) { + if (!getSettings().backend.enableAdvancedSettings || + !ImGuiConsole::CheckMenuViewToggle(ImGuiKey_F10, m_showAudioDebug)) + { return; } @@ -328,7 +330,9 @@ void dusk::ImGuiMenuTools::ShowAudioDebug() { } void dusk::ImGuiMenuTools::ShowSaveEditor() { - if (!ImGuiConsole::CheckMenuViewToggle(ImGuiKey_F6, m_showSaveEditor)) { + if (!getSettings().backend.enableAdvancedSettings || + !ImGuiConsole::CheckMenuViewToggle(ImGuiKey_F6, m_showSaveEditor)) + { return; } m_saveEditor.draw(m_showSaveEditor); diff --git a/src/dusk/imgui/ImGuiCameraOverlay.cpp b/src/dusk/imgui/ImGuiCameraOverlay.cpp index 2a39ef85eb..abdb988af0 100644 --- a/src/dusk/imgui/ImGuiCameraOverlay.cpp +++ b/src/dusk/imgui/ImGuiCameraOverlay.cpp @@ -10,7 +10,9 @@ namespace dusk { void ImGuiMenuTools::ShowCameraOverlay() { - if (!ImGuiConsole::CheckMenuViewToggle(ImGuiKey_F9, m_showCameraOverlay)) { + if (!getSettings().backend.enableAdvancedSettings || + !ImGuiConsole::CheckMenuViewToggle(ImGuiKey_F9, m_showCameraOverlay)) + { return; } diff --git a/src/dusk/imgui/ImGuiConsole.cpp b/src/dusk/imgui/ImGuiConsole.cpp index 09d1ca6e81..8f7eb7ff23 100644 --- a/src/dusk/imgui/ImGuiConsole.cpp +++ b/src/dusk/imgui/ImGuiConsole.cpp @@ -265,7 +265,11 @@ namespace dusk { } if (ImGui::GetIO().KeyShift && ImGui::IsKeyPressed(ImGuiKey_F1)) { - m_isHidden = !m_isHidden; + if (getSettings().backend.enableAdvancedSettings) { + m_isHidden = !m_isHidden; + } else { + m_isHidden = true; + } } bool showMenu = !m_isHidden; diff --git a/src/dusk/imgui/ImGuiHeapOverlay.cpp b/src/dusk/imgui/ImGuiHeapOverlay.cpp index a63ce4cfbe..33209ab0d4 100644 --- a/src/dusk/imgui/ImGuiHeapOverlay.cpp +++ b/src/dusk/imgui/ImGuiHeapOverlay.cpp @@ -22,7 +22,9 @@ namespace dusk { void ShowHeapDetailed(JKRHeap* heap, OpenHeapData& data, bool& open); void ImGuiMenuTools::ShowHeapOverlay() { - if (!ImGuiConsole::CheckMenuViewToggle(ImGuiKey_F4, m_showHeapOverlay)) { + if (!getSettings().backend.enableAdvancedSettings || + !ImGuiConsole::CheckMenuViewToggle(ImGuiKey_F4, m_showHeapOverlay)) + { return; } diff --git a/src/dusk/imgui/ImGuiMapLoader.cpp b/src/dusk/imgui/ImGuiMapLoader.cpp index 63f4befb44..cd6f292152 100644 --- a/src/dusk/imgui/ImGuiMapLoader.cpp +++ b/src/dusk/imgui/ImGuiMapLoader.cpp @@ -9,7 +9,9 @@ namespace dusk { void ImGuiMenuTools::ShowMapLoader() { - if (!ImGuiConsole::CheckMenuViewToggle(ImGuiKey_F7, m_showMapLoader)) { + if (!getSettings().backend.enableAdvancedSettings || + !ImGuiConsole::CheckMenuViewToggle(ImGuiKey_F7, m_showMapLoader)) + { return; } diff --git a/src/dusk/imgui/ImGuiMenuTools.cpp b/src/dusk/imgui/ImGuiMenuTools.cpp index 2326ba4fa4..0907d0c116 100644 --- a/src/dusk/imgui/ImGuiMenuTools.cpp +++ b/src/dusk/imgui/ImGuiMenuTools.cpp @@ -119,7 +119,9 @@ namespace dusk { } void ImGuiMenuTools::ShowDebugOverlay() { - if (!ImGuiConsole::CheckMenuViewToggle(ImGuiKey_F3, m_showDebugOverlay)) { + if (!getSettings().backend.enableAdvancedSettings || + !ImGuiConsole::CheckMenuViewToggle(ImGuiKey_F3, m_showDebugOverlay)) + { return; } @@ -183,7 +185,9 @@ namespace dusk { } void ImGuiMenuTools::ShowPlayerInfo() { - if (!ImGuiConsole::CheckMenuViewToggle(ImGuiKey_F5, m_showPlayerInfo)) { + if (!getSettings().backend.enableAdvancedSettings || + !ImGuiConsole::CheckMenuViewToggle(ImGuiKey_F5, m_showPlayerInfo)) + { return; } diff --git a/src/dusk/imgui/ImGuiProcessOverlay.cpp b/src/dusk/imgui/ImGuiProcessOverlay.cpp index ed71e6c485..806a9ea0f6 100644 --- a/src/dusk/imgui/ImGuiProcessOverlay.cpp +++ b/src/dusk/imgui/ImGuiProcessOverlay.cpp @@ -126,7 +126,9 @@ namespace dusk { } void ImGuiMenuTools::ShowProcessManager() { - if (!ImGuiConsole::CheckMenuViewToggle(ImGuiKey_F2, m_showProcessManagement)) { + if (!getSettings().backend.enableAdvancedSettings || + !ImGuiConsole::CheckMenuViewToggle(ImGuiKey_F2, m_showProcessManagement)) + { return; } diff --git a/src/dusk/imgui/ImGuiStateShare.cpp b/src/dusk/imgui/ImGuiStateShare.cpp index adbe5b6c67..a0bd450984 100644 --- a/src/dusk/imgui/ImGuiStateShare.cpp +++ b/src/dusk/imgui/ImGuiStateShare.cpp @@ -417,7 +417,9 @@ void ImGuiStateShare::draw(bool& open) { } void ImGuiMenuTools::ShowStateShare() { - if (!ImGuiConsole::CheckMenuViewToggle(ImGuiKey_F8, m_showStateShare)) { + if (!getSettings().backend.enableAdvancedSettings || + !ImGuiConsole::CheckMenuViewToggle(ImGuiKey_F8, m_showStateShare)) + { return; } m_stateShare.draw(m_showStateShare); diff --git a/src/dusk/settings.cpp b/src/dusk/settings.cpp index b3e0e13cd3..5de8c54163 100644 --- a/src/dusk/settings.cpp +++ b/src/dusk/settings.cpp @@ -115,7 +115,8 @@ UserSettings g_userSettings = { .showPipelineCompilation {"backend.showPipelineCompilation", false}, .wasPresetChosen {"backend.wasPresetChosen", false}, .enableCrashReporting {"backend.enableCrashReporting", true}, - .cardFileType {"backend.cardFileType", static_cast(CARD_GCIFOLDER)} + .cardFileType {"backend.cardFileType", static_cast(CARD_GCIFOLDER)}, + .enableAdvancedSettings {"backend.enableAdvancedSettings", false}, } }; @@ -214,6 +215,7 @@ void registerSettings() { Register(g_userSettings.backend.wasPresetChosen); Register(g_userSettings.backend.enableCrashReporting); Register(g_userSettings.backend.cardFileType); + Register(g_userSettings.backend.enableAdvancedSettings); } // Transient settings diff --git a/src/dusk/ui/settings.cpp b/src/dusk/ui/settings.cpp index de0f633c25..69958c8659 100644 --- a/src/dusk/ui/settings.cpp +++ b/src/dusk/ui/settings.cpp @@ -866,6 +866,12 @@ SettingsWindow::SettingsWindow(bool prelaunch) : mPrelaunch(prelaunch) { .key = "Show Pipeline Compilation", .helpText = "Show an overlay when shaders are being compiled for your hardware.", }); + + config_bool_select(leftPane, rightPane, getSettings().backend.enableAdvancedSettings, + { + .key = "Enable Advanced Settings", + .helpText = "Show the advanced settings on the menu bar.
Most users should have this disabled.", + }); }); } From d15ed81cd5558e6ee495e8442b60c347b6b4177f Mon Sep 17 00:00:00 2001 From: MelonSpeedruns Date: Thu, 7 May 2026 12:39:37 -0400 Subject: [PATCH 2/2] Only show Editor if Advanced Settings is enabled --- src/dusk/ui/menu_bar.cpp | 6 +++++- src/dusk/ui/settings.cpp | 2 ++ src/dusk/ui/ui.cpp | 4 ++++ src/dusk/ui/ui.hpp | 2 ++ 4 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/dusk/ui/menu_bar.cpp b/src/dusk/ui/menu_bar.cpp index d6f6274798..5a88501c2f 100644 --- a/src/dusk/ui/menu_bar.cpp +++ b/src/dusk/ui/menu_bar.cpp @@ -50,7 +50,11 @@ MenuBar::MenuBar() : Document(kDocumentSource), mRoot(mDocument->GetElementById( // mTabBar->add_tab("Warp", [] { // // TODO // }); - mTabBar->add_tab("Editor", [this] { push(std::make_unique()); }); + + if (getSettings().backend.enableAdvancedSettings) { + mTabBar->add_tab("Editor", [this] { push(std::make_unique()); }); + } + mTabBar->add_tab("Achievements", [this] { push(std::make_unique()); }); mTabBar->add_tab("Reset", [this] { mTabBar->set_active_tab(-1); diff --git a/src/dusk/ui/settings.cpp b/src/dusk/ui/settings.cpp index 69958c8659..ddb3b8ad3d 100644 --- a/src/dusk/ui/settings.cpp +++ b/src/dusk/ui/settings.cpp @@ -14,6 +14,7 @@ #include "pane.hpp" #include "prelaunch.hpp" #include "ui.hpp" +#include "menu_bar.hpp" #include @@ -871,6 +872,7 @@ SettingsWindow::SettingsWindow(bool prelaunch) : mPrelaunch(prelaunch) { { .key = "Enable Advanced Settings", .helpText = "Show the advanced settings on the menu bar.
Most users should have this disabled.", + .onChange = [](bool value) { get_document_stack()[0] = std::make_unique(); }, }); }); } diff --git a/src/dusk/ui/ui.cpp b/src/dusk/ui/ui.cpp index 69b1dace84..a646527ee5 100644 --- a/src/dusk/ui/ui.cpp +++ b/src/dusk/ui/ui.cpp @@ -363,6 +363,10 @@ void push_toast(Toast toast) noexcept { sToasts.push_back(std::move(toast)); } +std::vector >& get_document_stack() noexcept { + return sDocumentStack; +} + std::deque& get_toasts() noexcept { return sToasts; } diff --git a/src/dusk/ui/ui.hpp b/src/dusk/ui/ui.hpp index f3b0962e95..4a27ac7aac 100644 --- a/src/dusk/ui/ui.hpp +++ b/src/dusk/ui/ui.hpp @@ -82,6 +82,8 @@ Rml::Element* append(Rml::Element* parent, const Rml::String& tag) noexcept; NavCommand map_nav_event(const Rml::Event& event) noexcept; Insets safe_area_insets(Rml::Context* context) noexcept; +std::vector >& get_document_stack() noexcept; + void push_toast(Toast toast) noexcept; std::deque& get_toasts() noexcept; void show_menu_notification() noexcept;