From d0b9b6d10f70856f921c8d004fa69f38507aee81 Mon Sep 17 00:00:00 2001 From: SuperDude88 <82904174+SuperDude88@users.noreply.github.com> Date: Sat, 9 May 2026 15:37:14 -0400 Subject: [PATCH] Fix Prelaunch Break-out (#738) - Prevent users from breaking out of the prelaunch menu through the GraphicsTuner pages --- src/dusk/ui/graphics_tuner.cpp | 8 +++++--- src/dusk/ui/graphics_tuner.hpp | 3 ++- src/dusk/ui/settings.cpp | 14 +++++++------- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/src/dusk/ui/graphics_tuner.cpp b/src/dusk/ui/graphics_tuner.cpp index 8a11528914..188f0911c5 100644 --- a/src/dusk/ui/graphics_tuner.cpp +++ b/src/dusk/ui/graphics_tuner.cpp @@ -193,9 +193,10 @@ Rml::String format_graphics_setting_value(GraphicsOption option, int value) { return ""; } -GraphicsTuner::GraphicsTuner(GraphicsTunerProps props) +GraphicsTuner::GraphicsTuner(GraphicsTunerProps props, bool prelaunch) : Document(kDocumentSource), mOption(props.option), mValueMin(props.valueMin), - mValueMax(props.valueMax), mDefaultValue(props.defaultValue) { + mValueMax(props.valueMax), mDefaultValue(props.defaultValue), mPrelaunch(prelaunch) +{ if (mDocument == nullptr) { return; } @@ -281,7 +282,8 @@ bool GraphicsTuner::handle_nav_command(Rml::Event& event, NavCommand cmd) { pop(); return true; } - return Document::handle_nav_command(event, cmd); + + return mPrelaunch ? false : Document::handle_nav_command(event, cmd); } void GraphicsTuner::reset_default() { diff --git a/src/dusk/ui/graphics_tuner.hpp b/src/dusk/ui/graphics_tuner.hpp index 3f2418ef30..b020db1128 100644 --- a/src/dusk/ui/graphics_tuner.hpp +++ b/src/dusk/ui/graphics_tuner.hpp @@ -59,7 +59,7 @@ struct GraphicsTunerProps { class GraphicsTuner : public Document { public: - explicit GraphicsTuner(GraphicsTunerProps props); + explicit GraphicsTuner(GraphicsTunerProps props, bool prelaunch); void show() override; void hide(bool close) override; @@ -87,6 +87,7 @@ private: int mDefaultValue = 0; std::vector > mComponents; Rml::Element* mRoot; + bool mPrelaunch; }; } // namespace dusk::ui diff --git a/src/dusk/ui/settings.cpp b/src/dusk/ui/settings.cpp index fd7365a39d..edb136e5e0 100644 --- a/src/dusk/ui/settings.cpp +++ b/src/dusk/ui/settings.cpp @@ -274,7 +274,7 @@ SelectButton& config_percent_select(Pane& leftPane, Pane& rightPane, ConfigVar void graphics_tuner_control(Window& window, Pane& leftPane, Pane& rightPane, ConfigVar& var, - const GraphicsTunerProps& props) { + const GraphicsTunerProps& props, bool prelaunch) { leftPane.register_control( leftPane .add_select_button({ @@ -292,10 +292,10 @@ void graphics_tuner_control(Window& window, Pane& leftPane, Pane& rightPane, Con .isModified = [&var] { return var.getValue() != var.getDefaultValue(); }, .submit = false, }) - .on_nav_command([&window, props](Rml::Event&, NavCommand cmd) { + .on_nav_command([&window, props, prelaunch](Rml::Event&, NavCommand cmd) { if (cmd == NavCommand::Confirm || cmd == NavCommand::Left || cmd == NavCommand::Right) { - window.push(std::make_unique(props)); + window.push(std::make_unique(props, prelaunch)); return true; } return false; @@ -551,7 +551,7 @@ SettingsWindow::SettingsWindow(bool prelaunch) : mPrelaunch(prelaunch) { .valueMin = 0, .valueMax = 12, .defaultValue = 0, - }); + }, mPrelaunch); graphics_tuner_control(*this, leftPane, rightPane, getSettings().game.shadowResolutionMultiplier, GraphicsTunerProps{ @@ -561,7 +561,7 @@ SettingsWindow::SettingsWindow(bool prelaunch) : mPrelaunch(prelaunch) { .valueMin = 1, .valueMax = 8, .defaultValue = 1, - }); + }, mPrelaunch); leftPane.add_section("Post-Processing"); graphics_tuner_control(*this, leftPane, rightPane, getSettings().game.bloomMode, @@ -572,7 +572,7 @@ SettingsWindow::SettingsWindow(bool prelaunch) : mPrelaunch(prelaunch) { .valueMin = static_cast(BloomMode::Off), .valueMax = static_cast(BloomMode::Dusk), .defaultValue = static_cast(BloomMode::Classic), - }); + }, mPrelaunch); graphics_tuner_control(*this, leftPane, rightPane, getSettings().game.bloomMultiplier, GraphicsTunerProps{ .option = GraphicsOption::BloomMultiplier, @@ -581,7 +581,7 @@ SettingsWindow::SettingsWindow(bool prelaunch) : mPrelaunch(prelaunch) { .valueMin = 0, .valueMax = 100, .defaultValue = 100, - }); + }, mPrelaunch); leftPane.add_section("Rendering"); config_bool_select(leftPane, rightPane, getSettings().game.enableFrameInterpolation,