diff --git a/src/ObjLoading/Game/IW4/Menu/MenuConverterIW4.cpp b/src/ObjLoading/Game/IW4/Menu/MenuConverterIW4.cpp index 6aa08ac6..a2cae9a8 100644 --- a/src/ObjLoading/Game/IW4/Menu/MenuConverterIW4.cpp +++ b/src/ObjLoading/Game/IW4/Menu/MenuConverterIW4.cpp @@ -12,6 +12,7 @@ #include "Parsing/Simple/Expression/SimpleExpressionConditionalOperator.h" #include "Parsing/Simple/Expression/SimpleExpressionUnaryOperation.h" #include "Utils/ClassUtils.h" +#include "Utils/StringUtils.h" #include #include @@ -204,12 +205,15 @@ namespace IW4 const CommonMenuDef* menu, const CommonItemDef* item) const { - Statement_s* functionStatement = m_conversion_zone_state->FindFunction(functionCall->m_function_name); + std::string lowerCaseFunctionName(functionCall->m_function_name); + utils::MakeStringLowerCase(lowerCaseFunctionName); + + Statement_s* functionStatement = m_conversion_zone_state->FindFunction(lowerCaseFunctionName); if (functionStatement == nullptr) { // Function was not converted yet: Convert it now - const auto foundCommonFunction = m_parsing_zone_state->m_functions_by_name.find(functionCall->m_function_name); + const auto foundCommonFunction = m_parsing_zone_state->m_functions_by_name.find(lowerCaseFunctionName); if (foundCommonFunction == m_parsing_zone_state->m_functions_by_name.end()) throw MenuConversionException("Failed to find definition for custom function \"" + functionCall->m_function_name + "\"", menu, item); diff --git a/src/ObjLoading/Game/IW5/Menu/MenuConverterIW5.cpp b/src/ObjLoading/Game/IW5/Menu/MenuConverterIW5.cpp index 2da2a9da..321146fc 100644 --- a/src/ObjLoading/Game/IW5/Menu/MenuConverterIW5.cpp +++ b/src/ObjLoading/Game/IW5/Menu/MenuConverterIW5.cpp @@ -12,6 +12,7 @@ #include "Parsing/Simple/Expression/SimpleExpressionConditionalOperator.h" #include "Parsing/Simple/Expression/SimpleExpressionUnaryOperation.h" #include "Utils/ClassUtils.h" +#include "Utils/StringUtils.h" #include #include @@ -204,18 +205,21 @@ namespace IW5 const CommonMenuDef* menu, const CommonItemDef* item) const { - Statement_s* functionStatement = m_conversion_zone_state->FindFunction(functionCall->m_function_name); + std::string lowerCaseFunctionName(functionCall->m_function_name); + utils::MakeStringLowerCase(lowerCaseFunctionName); + + Statement_s* functionStatement = m_conversion_zone_state->FindFunction(lowerCaseFunctionName); if (functionStatement == nullptr) { // Function was not converted yet: Convert it now - const auto foundCommonFunction = m_parsing_zone_state->m_functions_by_name.find(functionCall->m_function_name); + const auto foundCommonFunction = m_parsing_zone_state->m_functions_by_name.find(lowerCaseFunctionName); if (foundCommonFunction == m_parsing_zone_state->m_functions_by_name.end()) throw MenuConversionException("Failed to find definition for custom function \"" + functionCall->m_function_name + "\"", menu, item); functionStatement = ConvertExpression(foundCommonFunction->second->m_value.get(), menu, item); - functionStatement = m_conversion_zone_state->AddFunction(foundCommonFunction->second->m_name, functionStatement); + functionStatement = m_conversion_zone_state->AddFunction(lowerCaseFunctionName, functionStatement); } expressionEntry functionEntry{}; diff --git a/src/ObjLoading/Parsing/Menu/MenuAssetZoneState.cpp b/src/ObjLoading/Parsing/Menu/MenuAssetZoneState.cpp index 0b3a8eb9..cf9c5191 100644 --- a/src/ObjLoading/Parsing/Menu/MenuAssetZoneState.cpp +++ b/src/ObjLoading/Parsing/Menu/MenuAssetZoneState.cpp @@ -1,10 +1,15 @@ #include "MenuAssetZoneState.h" +#include "Utils/StringUtils.h" + using namespace menu; void MenuAssetZoneState::AddFunction(std::unique_ptr function) { - m_functions_by_name.emplace(std::make_pair(function->m_name, function.get())); + std::string lowerCaseFunctionName(function->m_name); + utils::MakeStringLowerCase(lowerCaseFunctionName); + + m_functions_by_name.emplace(std::make_pair(lowerCaseFunctionName, function.get())); m_functions.emplace_back(std::move(function)); } diff --git a/src/ObjLoading/Parsing/Menu/MenuFileParserState.cpp b/src/ObjLoading/Parsing/Menu/MenuFileParserState.cpp index 64fe0ffa..9cb3af8a 100644 --- a/src/ObjLoading/Parsing/Menu/MenuFileParserState.cpp +++ b/src/ObjLoading/Parsing/Menu/MenuFileParserState.cpp @@ -1,5 +1,7 @@ #include "MenuFileParserState.h" +#include "Utils/StringUtils.h" + using namespace menu; MenuFileParserState::EventHandlerConditionState::EventHandlerConditionState(CommonEventHandlerCondition* condition) @@ -32,7 +34,9 @@ MenuFileParserState::MenuFileParserState(const FeatureLevel featureLevel, const { for (const auto& function : zoneState->m_functions) { - m_functions_by_name.emplace(std::make_pair(function->m_name, function.get())); + std::string lowerCaseName(function->m_name); + utils::MakeStringLowerCase(lowerCaseName); + m_functions_by_name.emplace(std::make_pair(lowerCaseName, function.get())); } for (const auto& menu : zoneState->m_menus)