diff options
| author | Philip Dubé <159546+serprex@users.noreply.github.com> | 2026-09-01 15:59:12 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-09-01 15:59:12 +0000 |
| commit | 0364f7076e88acb507a13f368d7b2ad13041d70d (patch) | |
| tree | c13fd393fb3cabcaa750ba20ca45833ba4fdc21c | |
| parent | acdbc651d4b11e29518442d6875a3ec181414cfc (diff) | |
Fix seed generation crash (#7140)
Also fix excluded locations all colliding with TODO name
| -rw-r--r-- | soh/soh/Enhancements/randomizer/3drando/spoiler_log.cpp | 3 | ||||
| -rw-r--r-- | soh/soh/Enhancements/randomizer/option.cpp | 10 | ||||
| -rw-r--r-- | soh/soh/Enhancements/randomizer/settings.cpp | 5 |
3 files changed, 12 insertions, 6 deletions
diff --git a/soh/soh/Enhancements/randomizer/3drando/spoiler_log.cpp b/soh/soh/Enhancements/randomizer/3drando/spoiler_log.cpp index 4e5a16264..6f0dbc7e9 100644 --- a/soh/soh/Enhancements/randomizer/3drando/spoiler_log.cpp +++ b/soh/soh/Enhancements/randomizer/3drando/spoiler_log.cpp @@ -146,7 +146,8 @@ static void WriteSettings() { auto ctx = Rando::Context::GetInstance(); std::array<Rando::Option, RSK_MAX> options = Rando::Settings::GetInstance()->GetAllOptions(); for (const Rando::Option& option : options) { - if (option.GetName() != "") { + // skip unassigned settings (RSK_NONE) + if (option.GetOptionCount() > 0) { jsonData["settings"][option.GetName()] = option.GetOptionText(ctx->GetOption(option.GetKey()).Get()); } } diff --git a/soh/soh/Enhancements/randomizer/option.cpp b/soh/soh/Enhancements/randomizer/option.cpp index 0d970b2f4..a3b3009a3 100644 --- a/soh/soh/Enhancements/randomizer/option.cpp +++ b/soh/soh/Enhancements/randomizer/option.cpp @@ -1,6 +1,7 @@ #include <libultraship/bridge/consolevariablebridge.h> #include "option.h" +#include "static_data.h" #include "soh/SohGui/SohMenu.h" #include "soh/Enhancements/Lang/Lang.h" #include <soh/cvar_prefixes.h> @@ -124,8 +125,6 @@ static const std::string& MakeTrickDescription(RandomizerTrick key) { #pragma endregion -const static std::string todo = "TODO"; - const std::string& Option::GetName() const { switch (this->GetCategory()) { case OptionCategory::Setting: @@ -134,7 +133,7 @@ const std::string& Option::GetName() const { case OptionCategory::Trick: return MakeTrickName(static_cast<RandomizerTrick>(this->key)); case OptionCategory::LocationExclusion: - return todo; + return StaticData::GetLocation(static_cast<RandomizerCheck>(this->key))->GetName(); default: assert(false); return error; @@ -149,7 +148,7 @@ const std::string& Option::GetDescription() const { case OptionCategory::Trick: return MakeTrickDescription(static_cast<RandomizerTrick>(this->key)); case OptionCategory::LocationExclusion: - return todo; + return empty; default: assert(false); return error; @@ -165,6 +164,9 @@ uint8_t Option::GetMenuOptionDefault() const { } const std::string& Option::GetOptionText(size_t index) const { + if (options.empty()) { + return empty; + } if (index >= options.size()) { index = options.size() - 1; } diff --git a/soh/soh/Enhancements/randomizer/settings.cpp b/soh/soh/Enhancements/randomizer/settings.cpp index b2906abbc..b78ca88e0 100644 --- a/soh/soh/Enhancements/randomizer/settings.cpp +++ b/soh/soh/Enhancements/randomizer/settings.cpp @@ -2556,7 +2556,10 @@ void Settings::CreateOptions() { std::unordered_map<std::string, RandomizerSettingKey> Settings::PopulateOptionNameToEnum() { std::unordered_map<std::string, RandomizerSettingKey> output = {}; for (size_t count = 0; count < RSK_MAX; count++) { - output[mOptions[count].GetName()] = static_cast<RandomizerSettingKey>(count); + // skip unassigned settings (RSK_NONE) + if (mOptions[count].GetOptionCount() > 0) { + output[mOptions[count].GetName()] = static_cast<RandomizerSettingKey>(count); + } } return output; } |
