From 240c3f566d6de2ebe16b92af4a9334661602f365 Mon Sep 17 00:00:00 2001 From: Dario Date: Tue, 21 Jan 2025 23:08:04 -0300 Subject: [PATCH] Proper enum parsing. --- librecomp/src/mod_manifest.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/librecomp/src/mod_manifest.cpp b/librecomp/src/mod_manifest.cpp index 6d85acd..99552d7 100644 --- a/librecomp/src/mod_manifest.cpp +++ b/librecomp/src/mod_manifest.cpp @@ -688,8 +688,12 @@ bool parse_mod_config_storage(const std::filesystem::path &path, const std::stri switch (option.type) { case recomp::mods::ConfigOptionType::Enum: - if (get_to(*option_json, value_int64)) { - config_storage.value_map[option.id] = uint32_t(value_int64); + if (get_to(*option_json, value_str)) { + const recomp::mods::ConfigOptionEnum &option_enum = std::get(option.variant); + auto option_it = std::find(option_enum.options.begin(), option_enum.options.end(), value_str); + if (option_it != option_enum.options.end()) { + config_storage.value_map[option.id] = uint32_t(option_it - option_enum.options.begin()); + } } break;