diff options
| author | Garrett Cox <garrettjcox@gmail.com> | 2024-09-30 18:35:17 -0500 |
|---|---|---|
| committer | Garrett Cox <garrettjcox@gmail.com> | 2024-09-30 18:35:17 -0500 |
| commit | eb3b3cd0c0d0b82f89adcfe2cc357ec09b84fb87 (patch) | |
| tree | b25746f093005cfed00ac19973b2fb898e04f99c /mm/2s2h/Rando/MiscBehavior/OnFileCreate.cpp | |
| parent | fd9b6aee9bd7000bbf1e2a843de62e6ed4e7d242 (diff) | |
Add randoOption and vanilla logic option
Diffstat (limited to 'mm/2s2h/Rando/MiscBehavior/OnFileCreate.cpp')
| -rw-r--r-- | mm/2s2h/Rando/MiscBehavior/OnFileCreate.cpp | 46 |
1 files changed, 34 insertions, 12 deletions
diff --git a/mm/2s2h/Rando/MiscBehavior/OnFileCreate.cpp b/mm/2s2h/Rando/MiscBehavior/OnFileCreate.cpp index 59e1130d7..0f868e60a 100644 --- a/mm/2s2h/Rando/MiscBehavior/OnFileCreate.cpp +++ b/mm/2s2h/Rando/MiscBehavior/OnFileCreate.cpp @@ -29,21 +29,33 @@ void Rando::MiscBehavior::OnFileCreate(s16 fileNum) { uint32_t finalSeed = boost::hash_32<std::string>{}(inputSeed); Ship_Random_Seed(finalSeed); - std::vector<RandoItemId> itemPool; - for (auto& [randoCheckId, randoStaticCheck] : Rando::StaticData::Checks) { - if (randoStaticCheck.randoCheckId != RC_UNKNOWN) { - itemPool.push_back(randoStaticCheck.randoItemId); - } + for (auto& [randoOptionId, randoStaticOption] : Rando::StaticData::Options) { + RANDO_SAVE_OPTIONS[randoOptionId] = CVarGetInteger(randoStaticOption.cvar, 0); } - for (size_t i = 0; i < itemPool.size(); i++) { - std::swap(itemPool[i], itemPool[Ship_Random(0, itemPool.size() - 1)]); - } + if (RANDO_SAVE_OPTIONS[RO_LOGIC] == RO_LOGIC_VANILLA) { + for (auto& [randoCheckId, randoStaticCheck] : Rando::StaticData::Checks) { + if (randoStaticCheck.randoCheckId != RC_UNKNOWN) { + RANDO_SAVE_CHECKS[randoCheckId].randoItemId = randoStaticCheck.randoItemId; + } + } + } else { + std::vector<RandoItemId> itemPool; + for (auto& [randoCheckId, randoStaticCheck] : Rando::StaticData::Checks) { + if (randoStaticCheck.randoCheckId != RC_UNKNOWN) { + itemPool.push_back(randoStaticCheck.randoItemId); + } + } - for (auto& [randoCheckId, randoStaticCheck] : Rando::StaticData::Checks) { - if (randoStaticCheck.randoCheckId != RC_UNKNOWN) { - RANDO_SAVE_CHECKS[randoCheckId].randoItemId = itemPool.back(); - itemPool.pop_back(); + for (size_t i = 0; i < itemPool.size(); i++) { + std::swap(itemPool[i], itemPool[Ship_Random(0, itemPool.size() - 1)]); + } + + for (auto& [randoCheckId, randoStaticCheck] : Rando::StaticData::Checks) { + if (randoStaticCheck.randoCheckId != RC_UNKNOWN) { + RANDO_SAVE_CHECKS[randoCheckId].randoItemId = itemPool.back(); + itemPool.pop_back(); + } } } @@ -52,6 +64,12 @@ void Rando::MiscBehavior::OnFileCreate(s16 fileNum) { j["type"] = "2S2H_RANDO_SPOILER"; j["inputSeed"] = inputSeed; j["finalSeed"] = finalSeed; + + j["options"] = nlohmann::json::object(); + for (auto& [randoOptionId, randoStaticOption] : Rando::StaticData::Options) { + j["options"][randoStaticOption.name] = RANDO_SAVE_OPTIONS[randoOptionId]; + } + j["checks"] = nlohmann::json::object(); for (auto& [randoCheckId, randoStaticCheck] : Rando::StaticData::Checks) { if (randoStaticCheck.randoCheckId != RC_UNKNOWN) { @@ -101,6 +119,10 @@ void Rando::MiscBehavior::OnFileCreate(s16 fileNum) { throw std::runtime_error("Spoiler file is not a valid spoiler file"); } + for (auto& [randoOptionId, randoStaticOption] : Rando::StaticData::Options) { + RANDO_SAVE_OPTIONS[randoOptionId] = j["options"][randoStaticOption.name].get<int>(); + } + for (auto& [randoCheckId, randoStaticCheck] : Rando::StaticData::Checks) { if (randoStaticCheck.randoCheckId != RC_UNKNOWN) { RANDO_SAVE_CHECKS[randoCheckId].randoItemId = Rando::StaticData::GetItemIdFromName( |
