From d7622a668fe792542821eb639347bd8be92d997c Mon Sep 17 00:00:00 2001 From: Piepieonline Date: Tue, 20 Oct 2026 14:17:07 +1100 Subject: [PATCH] [ResourceLib] Don't clear unknown enum values --- Libraries/ResourceLib/Src/ZHM/ZHMTypeInfo.cpp | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/Libraries/ResourceLib/Src/ZHM/ZHMTypeInfo.cpp b/Libraries/ResourceLib/Src/ZHM/ZHMTypeInfo.cpp index 1891135..d280030 100644 --- a/Libraries/ResourceLib/Src/ZHM/ZHMTypeInfo.cpp +++ b/Libraries/ResourceLib/Src/ZHM/ZHMTypeInfo.cpp @@ -43,12 +43,28 @@ class ZHMEnumTypeInfo : public IZHMTypeInfo case 2: s_Value = *reinterpret_cast(p_Object); break; default: s_Value = *reinterpret_cast(p_Object); break; } - p_Stream << simdjson::as_json_string(ZHMEnums::GetEnumValueName(m_TypeName, s_Value)); + + const std::string s_Name = ZHMEnums::GetEnumValueName(m_TypeName, s_Value); + + if (s_Name.empty()) + p_Stream << s_Value; + else + p_Stream << simdjson::as_json_string(s_Name); } void CreateFromJson(simdjson::ondemand::value p_Document, void* p_Target) override { - const int32_t s_Value = ZHMEnums::GetEnumValueByName(m_TypeName, std::string_view(p_Document)); + int32_t s_Value = 0; + + if (p_Document.type() == simdjson::ondemand::json_type::number) + { + s_Value = simdjson::from_json_int32(p_Document); + } + else + { + s_Value = ZHMEnums::GetEnumValueByName(m_TypeName, std::string_view(p_Document)); + } + switch (m_Size) { case 1: *reinterpret_cast(p_Target) = static_cast(s_Value); break;