From 6be07953d3cdf45b7f8117eb7c54f91c11775540 Mon Sep 17 00:00:00 2001 From: Mauro Junior <45118493+jetrotal@users.noreply.github.com> Date: Wed, 1 Nov 2023 10:59:11 -0300 Subject: [PATCH] dynRPG raw - fix for unsuported get() function dynRPG raw - fix for unsuported get() function (Mac, Android, etc)... --- src/constants.h | 45 +++++++++++++++++++++++++++------------------ 1 file changed, 27 insertions(+), 18 deletions(-) diff --git a/src/constants.h b/src/constants.h index 521367ba489..ac25b0b2d04 100644 --- a/src/constants.h +++ b/src/constants.h @@ -24,8 +24,9 @@ class Constants { public: std::map>> mapCollection; - Constants() { - mapCollection["DestinyScript"] = { + Constants() : mapCollection{ + //DestinyScript + {"DestinyScript",{ // Activation/Deactivation {"DISABLE", 0}, @@ -777,10 +778,10 @@ class Constants { {"TERRAIN_EVENT_TRANSPARENT", 3}, // Special Text Parts - {"CR", "Chr(0x0D)"}, - {"LF", "Chr(0x0A)"}, - {"CRLF", "CR..LF"}, - {"QUOTE", "\"\""}, + {"CR", std::string("Chr(0x0D)")}, + {"LF", std::string("Chr(0x0A)")}, + {"CRLF", std::string("CR..LF")}, + {"QUOTE", std::string("\"\"")}, // Text Colors {"TEXTCOLOR_DEFAULT", 0}, @@ -1173,8 +1174,9 @@ class Constants { {"CONDITIONLIMITATION_ATTACKENEMY", 2}, // LEGACY {"STATELIMITATION_ATTACKALLY", 3}, {"CONDITIONLIMITATION_ATTACKALLY", 3} // LEGACY - }; - mapCollection["EventCode"] = { + }}, + //EventCode + { "EventCode", { {"END", 10}, {"CallCommonEvent", 1005}, {"ForceFlee", 1006}, @@ -1329,8 +1331,8 @@ class Constants { { "Maniac_AddMoveRoute", 3027 }, { "Maniac_EditTile", 3028 }, { "Maniac_ControlTextProcessing", 3029 } - }; - }; + }} + } {}; std::string get(const std::string& mapName, const std::string& key) { // Use the find function to search for the map by name @@ -1338,21 +1340,28 @@ class Constants { if (mapIt != mapCollection.end()) { // Use the map associated with the mapName to look up the key in a case-insensitive manner auto& map = mapIt->second; - // Convert the search key and map keys to lowercase (or uppercase) for a case-insensitive search + // Convert the search key to lowercase for a case-insensitive search std::string lowercaseKey = toLower(key); for (auto it = map.begin(); it != map.end(); ++it) { std::string lowercaseMapKey = toLower(it->first); if (lowercaseMapKey == lowercaseKey) { - if (std::holds_alternative(it->second)) { - return std::get(it->second); - } - else { - return std::to_string(std::get(it->second)); - } + // Use std::visit to access the value stored in the variant + std::variant& value = it->second; + std::string result; + std::visit([&result](auto&& arg) { + using T = std::decay_t; + if constexpr (std::is_same_v) { + result = arg; + } + else if constexpr (std::is_same_v) { + result = std::to_string(arg); + } + }, value); + return result; } } } - return "0"; // Key not found + return "0"; // 0 when Key not found } // Helper function to convert a string to lowercase