Forráskód Böngészése

serialize uidCounter in CMap

kdmcser 5 hónapja
szülő
commit
69b58f1846
2 módosított fájl, 11 hozzáadás és 3 törlés
  1. 9 2
      lib/mapping/CMap.h
  2. 2 1
      lib/serializer/ESerializationVersion.h

+ 9 - 2
lib/mapping/CMap.h

@@ -348,8 +348,15 @@ public:
 
 		h & instanceNames;
 		h & *gameSettings;
-		if (!h.saving)
-			parseUidCounter();
+		if (!h.hasFeature(Handler::Version::STORE_UID_COUNTER_IN_CMAP)
+		{
+			if (!h.saving)
+				parseUidCounter();
+		}
+		else
+		{
+			h & uidCounter;
+		}
 	}
 };
 

+ 2 - 1
lib/serializer/ESerializationVersion.h

@@ -36,8 +36,9 @@ enum class ESerializationVersion : int32_t
 
 	MAP_HEADER_DISPOSED_HEROES, // map header contains disposed heroes list
 	NO_RAW_POINTERS_IN_SERIALIZER, // large rework that removed all non-owning pointers from serializer
+	STORE_UID_COUNTER_IN_CMAP,  // fix crash caused by conflicting instanceName after loading game
 	
-	CURRENT = NO_RAW_POINTERS_IN_SERIALIZER,
+	CURRENT = STORE_UID_COUNTER_IN_CMAP,
 };
 
 static_assert(ESerializationVersion::MINIMAL <= ESerializationVersion::CURRENT, "Invalid serialization version definition!");