Преглед изворни кода

Fix portrait serialization

# Conflicts:
#	lib/mapObjects/CGHeroInstance.cpp
nordsoft пре 2 година
родитељ
комит
f6d91cab35
1 измењених фајлова са 10 додато и 1 уклоњено
  1. 10 1
      lib/mapObjects/CGHeroInstance.cpp

+ 10 - 1
lib/mapObjects/CGHeroInstance.cpp

@@ -1469,7 +1469,12 @@ void CGHeroInstance::serializeCommonOptions(JsonSerializeFormat & handler)
 			if(portrait >= 0)
 			{
 				if(portrait < legacyHeroes || portrait >= moddedStart)
-					handler.serializeId<si32, si32, HeroTypeID>("portrait", portrait, -1);
+				{
+					int tempPortrait = portrait >= moddedStart
+						? portrait - GameConstants::HERO_PORTRAIT_SHIFT
+						: portrait;
+					handler.serializeId<si32, si32, HeroTypeID>("portrait", tempPortrait, -1);
+				}
 				else
 					handler.serializeInt("portrait", portrait, -1);
 			}
@@ -1479,7 +1484,11 @@ void CGHeroInstance::serializeCommonOptions(JsonSerializeFormat & handler)
 			const JsonNode & portraitNode = handler.getCurrent()["portrait"];
 
 			if(portraitNode.getType() == JsonNode::JsonType::DATA_STRING)
+			{
 				handler.serializeId<si32, si32, HeroTypeID>("portrait", portrait, -1);
+				if(portrait >= legacyHeroes)
+					portrait += GameConstants::HERO_PORTRAIT_SHIFT;
+			}
 			else
 				handler.serializeInt("portrait", portrait, -1);
 		}