From d25695be0e5c01aeeb5d9a8993ce935cc6ff86e6 Mon Sep 17 00:00:00 2001 From: CraftyBoss Date: Tue, 19 May 2026 17:40:49 -0700 Subject: [PATCH] implement basic warp to start button in rando menu serves as a sort of placeholder until Midna can be properly edited to behave like console rando --- .../randomizer/game/randomizer_context.hpp | 9 +++++++++ src/dusk/ui/rando_config.cpp | 18 ++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/src/dusk/randomizer/game/randomizer_context.hpp b/src/dusk/randomizer/game/randomizer_context.hpp index 6e5c91652a..d5d44d3ae1 100644 --- a/src/dusk/randomizer/game/randomizer_context.hpp +++ b/src/dusk/randomizer/game/randomizer_context.hpp @@ -60,6 +60,15 @@ public: // }; std::unordered_map mTextOverrides{}; + // TODO: hook this up to generator data + struct { + // for now use hardcoded values for this + std::string mapName = "F_SP103"; // (Ordon) Outside Link's House + int pointNo = 1; + int roomNo = 1; + int mapLayer = -1; + } mStartLocation; + std::optional WriteToFile(); std::optional LoadFromHash(const std::string& hash); std::filesystem::path GetSeedDataPath() const; diff --git a/src/dusk/ui/rando_config.cpp b/src/dusk/ui/rando_config.cpp index 5b09b6816a..2e645e4e06 100644 --- a/src/dusk/ui/rando_config.cpp +++ b/src/dusk/ui/rando_config.cpp @@ -459,6 +459,24 @@ RandomizerWindow::RandomizerWindow() { rando_config_toggle(leftPane, rightPane, "Ball and Chain Webs"); rando_config_toggle(leftPane, rightPane, "Logic Transform Anywhere"); }); + + if (randomizer_IsActive()) { + add_tab("In-Game", [this](Rml::Element* content) { + auto& leftPane = add_child(content, Pane::Type::Controlled); + auto& rightPane = add_child(content, Pane::Type::Uncontrolled); + + leftPane.add_section("General"); + + leftPane.register_control(leftPane.add_button("Warp to Start").on_pressed([] { + mDoAud_seStartMenu(kSoundClick); + auto& locData = randomizer_GetContext().mStartLocation; + dComIfGp_setNextStage(locData.mapName.c_str(), locData.pointNo, locData.roomNo, locData.mapLayer); + }), rightPane, [](Pane& pane) { + pane.clear(); + pane.add_rml("Respawns the player at their appropriate starting location."); + }); + }); + } } void RandomizerWindow::update() {