From 967283beb6d8609c92f72548f006d4df0e7f01c8 Mon Sep 17 00:00:00 2001 From: Laserlicht <13953785+Laserlicht@users.noreply.github.com> Date: Fri, 3 Oct 2025 18:27:55 +0200 Subject: [PATCH] fix deserializion of ResourceSet for compatibility --- lib/ResourceSet.h | 20 +++++++++++++++++++- lib/serializer/ESerializationVersion.h | 3 ++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/lib/ResourceSet.h b/lib/ResourceSet.h index a77beb7f8..7e56233ec 100644 --- a/lib/ResourceSet.h +++ b/lib/ResourceSet.h @@ -214,7 +214,25 @@ public: template void serialize(Handler &h) { - h & container; + if (h.version >= Handler::Version::CONFIGURABLE_RESOURCES) + h & container; + else + { + if (h.saving) + { + std::array tmp = {}; + for (size_t i = 0; i < 7; ++i) + tmp[i] = container[i]; + tmp[7] = TResource{}; + h & tmp; + } + else + { + std::array tmp = {}; + h & tmp; + container = std::vector(tmp.begin(), tmp.begin() + 7); + } + } } DLL_LINKAGE void serializeJson(JsonSerializeFormat & handler, const std::string & fieldName); diff --git a/lib/serializer/ESerializationVersion.h b/lib/serializer/ESerializationVersion.h index 052a8e653..45b11eb20 100644 --- a/lib/serializer/ESerializationVersion.h +++ b/lib/serializer/ESerializationVersion.h @@ -49,8 +49,9 @@ enum class ESerializationVersion : int32_t CAMPAIGN_BONUSES, // new format for scenario bonuses in campaigns BONUS_HIDDEN, // hidden bonus MORE_MAP_LAYERS, // more map layers + CONFIGURABLE_RESOURCES, // configurable resources - CURRENT = MORE_MAP_LAYERS, + CURRENT = CONFIGURABLE_RESOURCES, }; static_assert(ESerializationVersion::MINIMAL <= ESerializationVersion::CURRENT, "Invalid serialization version definition!");