1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-01-12 02:28:11 +02:00

Fix stackinstance deserialization

This commit is contained in:
nordsoft 2022-09-26 04:50:08 +04:00
parent bebe0dd86c
commit 9fb5d0e726
2 changed files with 15 additions and 4 deletions

View File

@ -859,9 +859,6 @@ PlayerColor CStackInstance::getOwner() const
void CStackInstance::deserializationFix()
{
const CCreature *backup = type;
type = nullptr;
setType(backup);
const CArmedInstance *armyBackup = _armyObj;
_armyObj = nullptr;
setArmyObj(armyBackup);

View File

@ -12,6 +12,7 @@
#include "HeroBonus.h"
#include "GameConstants.h"
#include "CArtHandler.h"
#include "CCreatureHandler.h"
VCMI_LIB_NAMESPACE_BEGIN
@ -40,7 +41,20 @@ public:
template <typename Handler> void serialize(Handler &h, const int version)
{
h & type;
if(h.saving)
{
CreatureID idNumber = type ? type->idNumber : CreatureID(CreatureID::NONE);
h & idNumber;
}
else
{
CreatureID idNumber;
h & idNumber;
if(idNumber != CreatureID::NONE)
setType(VLC->creh->objects[idNumber]);
else
type = nullptr;
}
h & count;
}