diff options
| author | Garrett Cox <garrettjcox@gmail.com> | 2026-01-19 23:14:10 -0600 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-01-19 23:14:10 -0600 |
| commit | 66d0276252b91314718b8eba2509d3105de92386 (patch) | |
| tree | 4869d5823859142e3a25226b5180fdc4073de5a9 | |
| parent | c768e773d14b4b1fcfa0608fa6ba7c6afcd6da2c (diff) | |
Gracefully handle old starting items config & allow empty starting items (#1475)
| -rw-r--r-- | mm/2s2h/Rando/StartingItems.cpp | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/mm/2s2h/Rando/StartingItems.cpp b/mm/2s2h/Rando/StartingItems.cpp index 13a41a472..3b1b6c540 100644 --- a/mm/2s2h/Rando/StartingItems.cpp +++ b/mm/2s2h/Rando/StartingItems.cpp @@ -148,16 +148,23 @@ std::vector<RandoItemId> GetStartingItemsFromConfig() { // Verify that the config has CVars.gRando.StartingItems and its an array if (allConfig.find("CVars") != allConfig.end() && allConfig["CVars"].is_object() && allConfig["CVars"].find("gRando") != allConfig["CVars"].end() && allConfig["CVars"]["gRando"].is_object() && - allConfig["CVars"]["gRando"].find("StartingItems") != allConfig["CVars"]["gRando"].end() && - allConfig["CVars"]["gRando"]["StartingItems"].is_array()) { - startingItems.clear(); - - auto startingItemsStrings = allConfig["CVars"]["gRando"]["StartingItems"].get<std::vector<std::string>>(); - for (auto& itemName : startingItemsStrings) { - auto randoItemId = Rando::StaticData::GetItemIdFromName(itemName.c_str()); - if (randoItemId > RI_UNKNOWN && randoItemId < RI_MAX) { - startingItems.push_back(randoItemId); + allConfig["CVars"]["gRando"].find("StartingItems") != allConfig["CVars"]["gRando"].end()) { + + if (allConfig["CVars"]["gRando"]["StartingItems"].is_array()) { + startingItems.clear(); + + auto startingItemsStrings = allConfig["CVars"]["gRando"]["StartingItems"].get<std::vector<std::string>>(); + for (auto& itemName : startingItemsStrings) { + auto randoItemId = Rando::StaticData::GetItemIdFromName(itemName.c_str()); + if (randoItemId > RI_UNKNOWN && randoItemId < RI_MAX) { + startingItems.push_back(randoItemId); + } } + } else if (allConfig["CVars"]["gRando"]["StartingItems"].is_string()) { + CVarClear("gRando.StartingItems"); + Ship::Context::GetInstance()->GetWindow()->GetGui()->SaveConsoleVariablesNextFrame(); + } else if (allConfig["CVars"]["gRando"]["StartingItems"].is_null()) { + startingItems.clear(); } } |
