Added Rando::Context::ParseTricksJson.

This commit is contained in:
Anthony Stewart 2025-04-12 12:28:59 -05:00
commit 11bdd48f43
4 changed files with 29 additions and 0 deletions

View file

@ -399,6 +399,7 @@ void Context::ParseSpoiler(const char* spoilerFileName) {
Rando::Settings::GetInstance()->ParseJson(spoilerFileJson); Rando::Settings::GetInstance()->ParseJson(spoilerFileJson);
ParseItemLocationsJson(spoilerFileJson); ParseItemLocationsJson(spoilerFileJson);
ParseHintJson(spoilerFileJson); ParseHintJson(spoilerFileJson);
ParseTricksJson(spoilerFileJson);
mEntranceShuffler->ParseJson(spoilerFileJson); mEntranceShuffler->ParseJson(spoilerFileJson);
mDungeons->ParseJson(spoilerFileJson); mDungeons->ParseJson(spoilerFileJson);
mTrials->ParseJson(spoilerFileJson); mTrials->ParseJson(spoilerFileJson);
@ -467,6 +468,17 @@ void Context::ParseHintJson(nlohmann::json spoilerFileJson) {
CreateStaticHints(); CreateStaticHints();
} }
void Context::ParseTricksJson(nlohmann::json spoilerFileJson) {
nlohmann::json enabledTricksJson = spoilerFileJson["enabledTricks"];
const auto& settings = Rando::Settings::GetInstance();
for (auto it : enabledTricksJson) {
int rt = settings->GetRandomizerTrickByName(it);
if (rt != -1) {
mTrickOptions[rt].Set(RO_GENERIC_ON);
}
}
}
std::shared_ptr<EntranceShuffler> Context::GetEntranceShuffler() { std::shared_ptr<EntranceShuffler> Context::GetEntranceShuffler() {
return mEntranceShuffler; return mEntranceShuffler;
} }

View file

@ -110,6 +110,7 @@ class Context {
void ParseItemLocationsJson(nlohmann::json spoilerFileJson); void ParseItemLocationsJson(nlohmann::json spoilerFileJson);
void WriteHintJson(nlohmann::ordered_json& spoilerFileJson); void WriteHintJson(nlohmann::ordered_json& spoilerFileJson);
void ParseHintJson(nlohmann::json spoilerFileJson); void ParseHintJson(nlohmann::json spoilerFileJson);
void ParseTricksJson(nlohmann::json spoilerFileJson);
std::map<RandomizerCheck, ItemOverride> overrides = {}; std::map<RandomizerCheck, ItemOverride> overrides = {};
std::vector<std::vector<RandomizerCheck>> playthroughLocations = {}; std::vector<std::vector<RandomizerCheck>> playthroughLocations = {};
std::vector<RandomizerCheck> everyPossibleLocation = {}; std::vector<RandomizerCheck> everyPossibleLocation = {};

View file

@ -1739,6 +1739,14 @@ TrickOption& Settings::GetTrickOption(const RandomizerTrick key) {
return mTrickOptions[key]; return mTrickOptions[key];
} }
int Settings::GetRandomizerTrickByName(const std::string& name) {
const auto& it = mTrickNameToEnum.find(name);
if (it == mTrickNameToEnum.end()) {
return -1;
}
return it->second;
}
void Context::ResetTrickOptions() { void Context::ResetTrickOptions() {
for (int count = 0; count < RT_MAX; count++) { for (int count = 0; count < RT_MAX; count++) {
mTrickOptions[count].Set(0); // RANDOTODO this can probably be done better mTrickOptions[count].Set(0); // RANDOTODO this can probably be done better

View file

@ -50,6 +50,14 @@ class Settings {
*/ */
TrickOption& GetTrickOption(RandomizerTrick key); TrickOption& GetTrickOption(RandomizerTrick key);
/**
* @brief Get the RandomizerTrick corresponding to the provided name.
*
* @param name
* @return int RandomizerTrick index or -1 if not found
*/
int GetRandomizerTrickByName(const std::string& name);
/** /**
* @brief Returns a reference to the entire array of options. * @brief Returns a reference to the entire array of options.
* *