Browse Source

Fix regressions from previous PR

Ivan Savenko 11 months ago
parent
commit
b9ff192a91
4 changed files with 14 additions and 7 deletions
  1. 1 1
      lib/CArtifactInstance.cpp
  2. 2 2
      lib/CCreatureSet.cpp
  3. 10 3
      lib/CCreatureSet.h
  4. 1 1
      lib/mapObjects/CGHeroInstance.cpp

+ 1 - 1
lib/CArtifactInstance.cpp

@@ -141,7 +141,7 @@ ArtifactID CArtifactInstance::getTypeId() const
 
 const CArtifact * CArtifactInstance::getType() const
 {
-	return artTypeID.toArtifact();
+	return artTypeID.hasValue() ? artTypeID.toArtifact() : nullptr;
 }
 
 ArtifactInstanceID CArtifactInstance::getId() const

+ 2 - 2
lib/CCreatureSet.cpp

@@ -1005,12 +1005,12 @@ CStackBasicDescriptor::CStackBasicDescriptor(const CCreature *c, TQuantity Count
 
 const CCreature * CStackBasicDescriptor::getCreature() const
 {
-	return typeID.toCreature();
+	return typeID.hasValue() ? typeID.toCreature() : nullptr;
 }
 
 const Creature * CStackBasicDescriptor::getType() const
 {
-	return typeID.toEntity(VLC);
+	return typeID.hasValue() ? typeID.toEntity(VLC) : nullptr;
 }
 
 CreatureID CStackBasicDescriptor::getId() const

+ 10 - 3
lib/CCreatureSet.h

@@ -51,9 +51,16 @@ public:
 
 	template <typename Handler> void serialize(Handler &h)
 	{
-		h & typeID;
-		if(!h.saving)
-			setType(typeID.toCreature());
+		if(h.saving)
+		{
+			h & typeID;
+		}
+		else
+		{
+			CreatureID creatureID;
+			h & creatureID;
+			setType(creatureID.toCreature());
+		}
 
 		h & count;
 	}

+ 1 - 1
lib/mapObjects/CGHeroInstance.cpp

@@ -358,7 +358,7 @@ TObjectTypeHandler CGHeroInstance::getObjectHandler() const
 void CGHeroInstance::updateAppearance()
 {
 	auto handler = VLC->objtypeh->getHandlerFor(Obj::HERO, getHeroClass()->getIndex());;
-	auto terrain = cb->gameState()->getTile(visitablePos())->terType->getId();
+	auto terrain = cb->gameState()->getTile(visitablePos())->getTerrainID();
 	auto app = handler->getOverride(terrain, this);
 	if (app)
 		appearance = app;