1
0
mirror of https://github.com/vcmi/vcmi.git synced 2024-12-24 22:14:36 +02:00

Code style: serialize everything on own lines for easier debugging (#357)

This commit is contained in:
ArseniyShestakov 2017-07-31 16:35:42 +03:00 committed by GitHub
parent 980926a7bd
commit 9d9c026c85
49 changed files with 1207 additions and 326 deletions

View File

@ -62,7 +62,9 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & this->h & hid & name; h & this->h;
h & hid;
h & name;
} }
}; };

View File

@ -121,8 +121,18 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & goalType & isElementar & isAbstract & priority; h & goalType;
h & value & resID & objid & aid & tile & hero & town & bid; h & isElementar;
h & isAbstract;
h & priority;
h & value;
h & resID;
h & objid;
h & aid;
h & tile;
h & hero;
h & town;
h & bid;
} }
}; };

View File

@ -63,7 +63,10 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & battle & remainingQueries & requestToQueryID & havingTurn; h & battle;
h & remainingQueries;
h & requestToQueryID;
h & havingTurn;
} }
}; };
@ -350,10 +353,18 @@ public:
template <typename Handler> void serializeInternal(Handler &h, const int version) template <typename Handler> void serializeInternal(Handler &h, const int version)
{ {
h & knownTeleportChannels & knownSubterraneanGates & destinationTeleport; h & knownTeleportChannels;
h & townVisitsThisWeek & lockedHeroes & reservedHeroesMap; //FIXME: cannot instantiate abstract class h & knownSubterraneanGates;
h & visitableObjs & alreadyVisited & reservedObjs; h & destinationTeleport;
h & saving & status & battlename; h & townVisitsThisWeek;
h & lockedHeroes;
h & reservedHeroesMap; //FIXME: cannot instantiate abstract class
h & visitableObjs;
h & alreadyVisited;
h & reservedObjs;
h & saving;
h & status;
h & battlename;
h & heroesUnableToExplore; h & heroesUnableToExplore;
//myCB is restored after load by init call //myCB is restored after load by init call

View File

@ -1350,7 +1350,9 @@ template <typename Handler> void CPlayerInterface::serializeTempl( Handler &h, c
h & observerInDuelMode; h & observerInDuelMode;
} }
h & wanderingHeroes & towns & sleepingHeroes; h & wanderingHeroes;
h & towns;
h & sleepingHeroes;
std::map<const CGHeroInstance *, int3> pathsMap; //hero -> dest std::map<const CGHeroInstance *, int3> pathsMap; //hero -> dest
if (h.saving) if (h.saving)

View File

@ -125,7 +125,10 @@ public:
SpellbookLastSetting(); SpellbookLastSetting();
template <typename Handler> void serialize( Handler &h, const int version ) template <typename Handler> void serialize( Handler &h, const int version )
{ {
h & spellbookLastPageBattle & spellbokLastPageAdvmap & spellbookLastTabBattle & spellbookLastTabAdvmap; h & spellbookLastPageBattle;
h & spellbokLastPageAdvmap;
h & spellbookLastTabBattle;
h & spellbookLastTabAdvmap;
} }
} spellbookSettings; } spellbookSettings;

View File

@ -504,7 +504,9 @@ void CClient::serialize(BinarySerializer & h, const int version)
{ {
LOG_TRACE_PARAMS(logGlobal, "Saving player %s interface", i->first); LOG_TRACE_PARAMS(logGlobal, "Saving player %s interface", i->first);
assert(i->first == i->second->playerID); assert(i->first == i->second->playerID);
h & i->first & i->second->dllName & i->second->human; h & i->first;
h & i->second->dllName;
h & i->second->human;
i->second->saveGame(h, version); i->second->saveGame(h, version);
} }
} }
@ -524,7 +526,9 @@ void CClient::serialize(BinaryDeserializer & h, const int version)
PlayerColor pid; PlayerColor pid;
bool isHuman = false; bool isHuman = false;
h & pid & dllname & isHuman; h & pid;
h & dllname;
h & isHuman;
LOG_TRACE_PARAMS(logGlobal, "Loading player %s interface", pid); LOG_TRACE_PARAMS(logGlobal, "Loading player %s interface", pid);
std::shared_ptr<CGameInterface> nInt; std::shared_ptr<CGameInterface> nInt;
@ -573,7 +577,9 @@ void CClient::serialize(BinarySerializer & h, const int version, const std::set<
{ {
LOG_TRACE_PARAMS(logGlobal, "Saving player %s interface", i->first); LOG_TRACE_PARAMS(logGlobal, "Saving player %s interface", i->first);
assert(i->first == i->second->playerID); assert(i->first == i->second->playerID);
h & i->first & i->second->dllName & i->second->human; h & i->first;
h & i->second->dllName;
h & i->second->human;
i->second->saveGame(h, version); i->second->saveGame(h, version);
} }
} }
@ -593,7 +599,9 @@ void CClient::serialize(BinaryDeserializer & h, const int version, const std::se
PlayerColor pid; PlayerColor pid;
bool isHuman = false; bool isHuman = false;
h & pid & dllname & isHuman; h & pid;
h & dllname;
h & isHuman;
LOG_TRACE_PARAMS(logGlobal, "Loading player %s interface", pid); LOG_TRACE_PARAMS(logGlobal, "Loading player %s interface", pid);
std::shared_ptr<CGameInterface> nInt; std::shared_ptr<CGameInterface> nInt;

View File

@ -77,8 +77,19 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & static_cast<CBonusSystemNode&>(*this); h & static_cast<CBonusSystemNode&>(*this);
h & name & description & eventText & image & large & advMapDef & iconIndex & h & name;
price & possibleSlots & constituents & constituentOf & aClass & id; h & description;
h & eventText;
h & image;
h & large;
h & advMapDef;
h & iconIndex;
h & price;
h & possibleSlots;
h & constituents;
h & constituentOf;
h & aClass;
h & id;
if(version >= 759) if(version >= 759)
{ {
h & identifier; h & identifier;
@ -113,7 +124,8 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & static_cast<CArtifact&>(*this); h & static_cast<CArtifact&>(*this);
h & bonusesPerLevel & thresholdBonuses; h & bonusesPerLevel;
h & thresholdBonuses;
} }
}; };
@ -154,7 +166,8 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & static_cast<CBonusSystemNode&>(*this); h & static_cast<CBonusSystemNode&>(*this);
h & artType & id; h & artType;
h & id;
BONUS_TREE_DESERIALIZATION_FIX BONUS_TREE_DESERIALIZATION_FIX
} }
@ -183,7 +196,8 @@ public:
ArtifactPosition slot; ArtifactPosition slot;
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & art & slot; h & art;
h & slot;
} }
bool operator==(const ConstituentInfo &rhs) const; bool operator==(const ConstituentInfo &rhs) const;
@ -265,8 +279,13 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & artifacts & allowedArtifacts & treasures & minors & majors & relics h & artifacts;
& growingArtifacts; h & allowedArtifacts;
h & treasures;
h & minors;
h & majors;
h & relics;
h & growingArtifacts;
} }
private: private:
@ -295,7 +314,8 @@ struct DLL_LINKAGE ArtSlotInfo
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & artifact & locked; h & artifact;
h & locked;
} }
}; };
@ -330,7 +350,8 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & artifactsInBackpack & artifactsWorn; h & artifactsInBackpack;
h & artifactsWorn;
} }
void artDeserializationFix(CBonusSystemNode *node); void artDeserializationFix(CBonusSystemNode *node);

View File

@ -50,7 +50,10 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & icon & nameTemplate & descriptionTemplate & hidden; h & icon;
h & nameTemplate;
h & descriptionTemplate;
h & hidden;
if (!h.saving) if (!h.saving)
buildMacros(); buildMacros();

View File

@ -69,11 +69,20 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & timeBetweenFidgets & idleAnimationTime; h & timeBetweenFidgets;
h & walkAnimationTime & attackAnimationTime & flightAnimationDistance; h & idleAnimationTime;
h & upperRightMissleOffsetX & rightMissleOffsetX & lowerRightMissleOffsetX; h & walkAnimationTime;
h & upperRightMissleOffsetY & rightMissleOffsetY & lowerRightMissleOffsetY; h & attackAnimationTime;
h & missleFrameAngles & troopCountLocationOffset & attackClimaxFrame; h & flightAnimationDistance;
h & upperRightMissleOffsetX;
h & rightMissleOffsetX;
h & lowerRightMissleOffsetX;
h & upperRightMissleOffsetY;
h & rightMissleOffsetY;
h & lowerRightMissleOffsetY;
h & missleFrameAngles;
h & troopCountLocationOffset;
h & attackClimaxFrame;
h & projectileImageName; h & projectileImageName;
} }
} animation; } animation;
@ -92,7 +101,14 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & attack & defend & killed & move & shoot & wince & startMoving & endMoving; h & attack;
h & defend;
h & killed;
h & move;
h & shoot;
h & wince;
h & startMoving;
h & endMoving;
} }
} sounds; } sounds;
@ -128,16 +144,32 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & static_cast<CBonusSystemNode&>(*this); h & static_cast<CBonusSystemNode&>(*this);
h & namePl & nameSing & nameRef h & namePl;
& cost & upgrades h & nameSing;
& fightValue & AIValue & growth & hordeGrowth h & nameRef;
& ammMin & ammMax & level h & cost;
& abilityText & animDefName & advMapDef; h & upgrades;
h & iconIndex & smallIconName & largeIconName; h & fightValue;
h & AIValue;
h & growth;
h & hordeGrowth;
h & ammMin;
h & ammMax;
h & level;
h & abilityText;
h & animDefName;
h & advMapDef;
h & iconIndex;
h & smallIconName;
h & largeIconName;
h & idNumber & faction & sounds & animation; h & idNumber;
h & faction;
h & sounds;
h & animation;
h & doubleWide & special; h & doubleWide;
h & special;
if(version>=759) if(version>=759)
{ {
h & identifier; h & identifier;
@ -236,9 +268,14 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
//TODO: should be optimized, not all these informations needs to be serialized (same for ccreature) //TODO: should be optimized, not all these informations needs to be serialized (same for ccreature)
h & doubledCreatures & creatures; h & doubledCreatures;
h & expRanks & maxExpPerBattle & expAfterUpgrade; h & creatures;
h & skillLevels & skillRequirements & commanderLevelPremy; h & expRanks;
h & maxExpPerBattle;
h & expAfterUpgrade;
h & skillLevels;
h & skillRequirements;
h & commanderLevelPremy;
h & allCreatures; h & allCreatures;
h & creaturesOfLevel; h & creaturesOfLevel;
BONUS_TREE_DESERIALIZATION_FIX BONUS_TREE_DESERIALIZATION_FIX

View File

@ -35,7 +35,8 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & type & count; h & type;
h & count;
} }
void serializeJson(JsonSerializeFormat & handler); void serializeJson(JsonSerializeFormat & handler);
@ -60,7 +61,8 @@ public:
h & static_cast<CBonusSystemNode&>(*this); h & static_cast<CBonusSystemNode&>(*this);
h & static_cast<CStackBasicDescriptor&>(*this); h & static_cast<CStackBasicDescriptor&>(*this);
h & static_cast<CArtifactSet&>(*this); h & static_cast<CArtifactSet&>(*this);
h & _armyObj & experience; h & _armyObj;
h & experience;
BONUS_TREE_DESERIALIZATION_FIX BONUS_TREE_DESERIALIZATION_FIX
} }
@ -124,7 +126,11 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & static_cast<CStackInstance&>(*this); h & static_cast<CStackInstance&>(*this);
h & alive & level & name & secondarySkills & specialSKills; h & alive;
h & level;
h & name;
h & secondarySkills;
h & specialSKills;
} }
}; };
@ -217,7 +223,8 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & stacks & formation; h & stacks;
h & formation;
} }
void serializeJson(JsonSerializeFormat & handler, const std::string & fieldName, const boost::optional<int> fixedSize = boost::none); void serializeJson(JsonSerializeFormat & handler, const std::string & fieldName, const boost::optional<int> fixedSize = boost::none);

View File

@ -74,8 +74,19 @@ struct DLL_LINKAGE SThievesGuildInfo
// template <typename Handler> void serialize(Handler &h, const int version) // template <typename Handler> void serialize(Handler &h, const int version)
// { // {
// h & playerColors & numOfTowns & numOfHeroes & gold & woodOre & mercSulfCrystGems & obelisks & artifacts & army & income; // h & playerColors;
// h & colorToBestHero & personality & bestCreature; // h & numOfTowns;
// h & numOfHeroes;
// h & gold;
// h & woodOre;
// h & mercSulfCrystGems;
// h & obelisks;
// h & artifacts;
// h & army;
// h & income;
// h & colorToBestHero;
// h & personality;
// h & bestCreature;
// } // }
}; };
@ -104,7 +115,8 @@ struct DLL_LINKAGE RumorState
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & type & last; h & type;
h & last;
} }
}; };
@ -133,7 +145,8 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & heroesPool & pavailable; h & heroesPool;
h & pavailable;
} }
} hpool; //we have here all heroes available on this map that are not hired } hpool; //we have here all heroes available on this map that are not hired
@ -194,13 +207,24 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & scenarioOps & initialOpts & currentPlayer & day & map & players & teams & hpool & globalEffects & rand; h & scenarioOps;
h & initialOpts;
h & currentPlayer;
h & day;
h & map;
h & players;
h & teams;
h & hpool;
h & globalEffects;
h & rand;
if(version >= 755) //save format backward compatibility if(version >= 755) //save format backward compatibility
{ {
h & rumor; h & rumor;
} }
else if(!h.saving) else if(!h.saving)
{
rumor = RumorState(); rumor = RumorState();
}
BONUS_TREE_DESERIALIZATION_FIX BONUS_TREE_DESERIALIZATION_FIX
} }

View File

@ -140,7 +140,9 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & intValue & messageToSelf & messageToOthers; h & intValue;
h & messageToSelf;
h & messageToOthers;
} }
private: private:
enum EResult enum EResult
@ -196,6 +198,8 @@ struct DLL_LINKAGE QuestInfo //universal interface for human and AI
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & quest & obj & tile; h & quest;
h & obj;
h & tile;
} }
}; };

View File

@ -28,7 +28,10 @@ struct SSpecialtyInfo
si32 additionalinfo; si32 additionalinfo;
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & type & val & subtype & additionalinfo; h & type;
h & val;
h & subtype;
h & additionalinfo;
} }
}; };
@ -39,7 +42,8 @@ struct SSpecialtyBonus
BonusList bonuses; BonusList bonuses;
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & growsWithLevel & bonuses; h & growsWithLevel;
h & bonuses;
} }
}; };
@ -54,7 +58,9 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & minAmount & maxAmount & creature; h & minAmount;
h & maxAmount;
h & creature;
} }
}; };
std::string identifier; std::string identifier;
@ -87,9 +93,26 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & ID & imageIndex & initialArmy & heroClass & secSkillsInit & spec & specialty & spells & haveSpellBook & sex & special; h & ID;
h & name & biography & specName & specDescr & specTooltip; h & imageIndex;
h & iconSpecSmall & iconSpecLarge & portraitSmall & portraitLarge; h & initialArmy;
h & heroClass;
h & secSkillsInit;
h & spec;
h & specialty;
h & spells;
h & haveSpellBook;
h & sex;
h & special;
h & name;
h & biography;
h & specName;
h & specDescr;
h & specTooltip;
h & iconSpecSmall;
h & iconSpecLarge;
h & portraitSmall;
h & portraitLarge;
if(version >= 759) if(version >= 759)
{ {
h & identifier; h & identifier;
@ -139,11 +162,22 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & identifier & name & faction & id & defaultTavernChance;// & aggression; h & identifier;
h & primarySkillInitial & primarySkillLowLevel; h & name;
h & primarySkillHighLevel & secSkillProbability; h & faction;
h & selectionProbability & affinity & commander; h & id;
h & imageBattleMale & imageBattleFemale & imageMapMale & imageMapFemale; h & defaultTavernChance;
h & primarySkillInitial;
h & primarySkillLowLevel;
h & primarySkillHighLevel;
h & secSkillProbability;
h & selectionProbability;
h & affinity;
h & commander;
h & imageBattleMale;
h & imageBattleFemale;
h & imageMapMale;
h & imageMapFemale;
} }
EAlignment::EAlignment getAlignment() const; EAlignment::EAlignment getAlignment() const;
}; };
@ -165,7 +199,14 @@ struct DLL_LINKAGE CObstacleInfo
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & ID & defName & allowedTerrains & allowedSpecialBfields & isAbsoluteObstacle & width & height & blockedTiles; h & ID;
h & defName;
h & allowedTerrains;
h & allowedSpecialBfields;
h & isAbsoluteObstacle;
h & width;
h & height;
h & blockedTiles;
} }
}; };
@ -227,7 +268,15 @@ public:
ui8 sum; //I don't know if it is useful for anything, but it's in config file ui8 sum; //I don't know if it is useful for anything, but it's in config file
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & keep & tower & gate & wall & shots & noDmg & oneDmg & twoDmg & sum; h & keep;
h & tower;
h & gate;
h & wall;
h & shots;
h & noDmg;
h & oneDmg;
h & twoDmg;
h & sum;
} }
}; };
std::vector<SBallisticsLevelInfo> ballistics; //info about ballistics ability per level; [0] - none; [1] - basic; [2] - adv; [3] - expert std::vector<SBallisticsLevelInfo> ballistics; //info about ballistics ability per level; [0] - none; [1] - basic; [2] - adv; [3] - expert
@ -269,7 +318,12 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & classes & heroes & expPerLevel & ballistics & terrCosts; h & classes;
h & obstacles & absoluteObstacles; h & heroes;
h & expPerLevel;
h & ballistics;
h & terrCosts;
h & obstacles;
h & absoluteObstacles;
} }
}; };

View File

@ -54,7 +54,8 @@ class CIdentifierStorage
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & id & scope; h & id;
h & scope;
} }
}; };
@ -98,7 +99,8 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & registeredObjects & state; h & registeredObjects;
h & state;
} }
}; };
@ -205,9 +207,15 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & identifier & description & name; h & identifier;
h & dependencies & conflicts & config; h & description;
h & checksum & validation & enabled; h & name;
h & dependencies;
h & conflicts;
h & config;
h & checksum;
h & validation;
h & enabled;
} }
private: private:
void loadLocalData(const JsonNode & data); void loadLocalData(const JsonNode & data);
@ -271,9 +279,15 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & data & CREEP_SIZE & WEEKLY_GROWTH & NEUTRAL_STACK_EXP & MAX_BUILDING_PER_TURN; h & data;
h & DWELLINGS_ACCUMULATE_CREATURES & ALL_CREATURES_GET_DOUBLE_MONTHS & h & CREEP_SIZE;
MAX_HEROES_AVAILABLE_PER_PLAYER & MAX_HEROES_ON_MAP_PER_PLAYER; h & WEEKLY_GROWTH;
h & NEUTRAL_STACK_EXP;
h & MAX_BUILDING_PER_TURN;
h & DWELLINGS_ACCUMULATE_CREATURES;
h & ALL_CREATURES_GET_DOUBLE_MONTHS;
h & MAX_HEROES_AVAILABLE_PER_PLAYER;
h & MAX_HEROES_ON_MAP_PER_PLAYER;
if(version >= 756) if(version >= 756)
{ {
h & WINNING_HERO_WITH_NO_TROOPS_RETREATS; h & WINNING_HERO_WITH_NO_TROOPS_RETREATS;
@ -303,7 +317,10 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & STACK_EXP & STACK_ARTIFACT & COMMANDERS & MITHRIL; h & STACK_EXP;
h & STACK_ARTIFACT;
h & COMMANDERS;
h & MITHRIL;
} }
} modules; } modules;
@ -318,6 +335,10 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & allMods & activeMods & settings & modules & identifiers; h & allMods;
h & activeMods;
h & settings;
h & modules;
h & identifiers;
} }
}; };

View File

@ -40,8 +40,17 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & color & human & team & resources & status; h & color;
h & heroes & towns & availableHeroes & dwellings & quests & visitedObjects; h & human;
h & team;
h & resources;
h & status;
h & heroes;
h & towns;
h & availableHeroes;
h & dwellings;
h & quests;
h & visitedObjects;
if(version < 760) if(version < 760)
{ {
@ -50,8 +59,10 @@ public:
h & junk; h & junk;
} }
h & status & daysWithoutCastle; h & status;
h & enteredLosingCheatCode & enteredWinningCheatCode; h & daysWithoutCastle;
h & enteredLosingCheatCode;
h & enteredWinningCheatCode;
h & static_cast<CBonusSystemNode&>(*this); h & static_cast<CBonusSystemNode&>(*this);
} }
}; };
@ -69,7 +80,9 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & id & players & fogOfWarMap; h & id;
h & players;
h & fogOfWarMap;
h & static_cast<CBonusSystemNode&>(*this); h & static_cast<CBonusSystemNode&>(*this);
} }

View File

@ -117,7 +117,9 @@ public:
{ {
if(!h.saving) if(!h.saving)
reset(); reset();
h & firstHPleft & fullUnits & resurrected; h & firstHPleft;
h & fullUnits;
h & resurrected;
} }
private: private:
void addResurrected(int32_t amount); void addResurrected(int32_t amount);
@ -253,19 +255,30 @@ public:
assert(isIndependentNode()); assert(isIndependentNode());
h & static_cast<CBonusSystemNode&>(*this); h & static_cast<CBonusSystemNode&>(*this);
h & type; h & type;
h & ID & baseAmount & owner & slot & side & position & state; h & ID;
h & shots & casts & counterAttacks & health; h & baseAmount;
h & owner;
h & slot;
h & side;
h & position;
h & state;
h & shots;
h & casts;
h & counterAttacks;
h & health;
const CArmedInstance * army = (base ? base->armyObj : nullptr); const CArmedInstance * army = (base ? base->armyObj : nullptr);
SlotID extSlot = (base ? base->armyObj->findStack(base) : SlotID()); SlotID extSlot = (base ? base->armyObj->findStack(base) : SlotID());
if(h.saving) if(h.saving)
{ {
h & army & extSlot; h & army;
h & extSlot;
} }
else else
{ {
h & army & extSlot; h & army;
h & extSlot;
if(extSlot == SlotID::COMMANDER_SLOT_PLACEHOLDER) if(extSlot == SlotID::COMMANDER_SLOT_PLACEHOLDER)
{ {
auto hero = dynamic_cast<const CGHeroInstance *>(army); auto hero = dynamic_cast<const CGHeroInstance *>(army);

View File

@ -68,7 +68,16 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & identifier & town & bid & resources & produce & name & description & requirements & upgrade & mode; h & identifier;
h & town;
h & bid;
h & resources;
h & produce;
h & name;
h & description;
h & requirements;
h & upgrade;
h & mode;
} }
friend class CTownHandler; friend class CTownHandler;
@ -88,7 +97,14 @@ struct DLL_LINKAGE CStructure
bool hiddenUpgrade; // used only if "building" is upgrade, if true - structure on town screen will behave exactly like parent (mouse clicks, hover texts, etc) bool hiddenUpgrade; // used only if "building" is upgrade, if true - structure on town screen will behave exactly like parent (mouse clicks, hover texts, etc)
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & pos & defName & borderName & areaName & identifier & building & buildable & hiddenUpgrade; h & pos;
h & defName;
h & borderName;
h & areaName;
h & identifier;
h & building;
h & buildable;
h & hiddenUpgrade;
} }
}; };
@ -101,7 +117,11 @@ struct DLL_LINKAGE SPuzzleInfo
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & number & x & y & whenUncovered & filename; h & number;
h & x;
h & y;
h & whenUncovered;
h & filename;
} }
}; };
@ -130,7 +150,15 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & name & identifier & index & nativeTerrain & alignment & town & creatureBg120 & creatureBg130 & puzzleMap; h & name;
h & identifier;
h & index;
h & nativeTerrain;
h & alignment;
h & town;
h & creatureBg120;
h & creatureBg130;
h & puzzleMap;
} }
}; };
@ -179,7 +207,10 @@ public:
si32 y; si32 y;
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ h & x & y; } {
h & x;
h & y;
}
}; };
//icons [fort is present?][build limit reached?] -> index of icon in def files //icons [fort is present?][build limit reached?] -> index of icon in def files
@ -206,16 +237,38 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & icons & iconSmall & iconLarge & tavernVideo & musicTheme & townBackground & guildBackground & guildWindow & buildingsIcons & hallBackground; h & icons;
h & hallSlots & structures; h & iconSmall;
h & siegePrefix & siegePositions & siegeShooter; h & iconLarge;
h & tavernVideo;
h & musicTheme;
h & townBackground;
h & guildBackground;
h & guildWindow;
h & buildingsIcons;
h & hallBackground;
h & hallSlots;
h & structures;
h & siegePrefix;
h & siegePositions;
h & siegeShooter;
} }
} clientInfo; } clientInfo;
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & names & faction & creatures & dwellings & dwellingNames & buildings & hordeLvl & mageLevel h & names;
& primaryRes & warMachine & clientInfo & moatDamage; h & faction;
h & creatures;
h & dwellings;
h & dwellingNames;
h & buildings;
h & hordeLvl;
h & mageLevel;
h & primaryRes;
h & warMachine;
h & clientInfo;
h & moatDamage;
if(version >= 758) if(version >= 758)
{ {
h & moatHexes; h & moatHexes;

View File

@ -335,7 +335,19 @@ struct DLL_LINKAGE Bonus : public std::enable_shared_from_this<Bonus>
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & duration & type & subtype & source & val & sid & description & additionalInfo & turnsRemain & valType & effectRange & limiter & propagator; h & duration;
h & type;
h & subtype;
h & source;
h & val;
h & sid;
h & description;
h & additionalInfo;
h & turnsRemain;
h & valType;
h & effectRange;
h & limiter;
h & propagator;
} }
template <typename Ptr> template <typename Ptr>
@ -692,7 +704,8 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & /*bonuses & */nodeType; // h & bonuses;
h & nodeType;
h & exportedBonuses; h & exportedBonuses;
h & description; h & description;
BONUS_TREE_DESERIALIZATION_FIX BONUS_TREE_DESERIALIZATION_FIX
@ -816,7 +829,8 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & static_cast<ILimiter&>(*this); h & static_cast<ILimiter&>(*this);
h & creature & includeUpgrades; h & creature;
h & includeUpgrades;
} }
}; };
@ -835,7 +849,9 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & static_cast<ILimiter&>(*this); h & static_cast<ILimiter&>(*this);
h & type & subtype & isSubtypeRelevant; h & type;
h & subtype;
h & isSubtypeRelevant;
} }
}; };
@ -915,7 +931,8 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & static_cast<ILimiter&>(*this); h & static_cast<ILimiter&>(*this);
h & minRank & maxRank; h & minRank;
h & maxRank;
} }
}; };

View File

@ -92,7 +92,8 @@ struct StackLocation
DLL_LINKAGE const CStackInstance *getStack(); DLL_LINKAGE const CStackInstance *getStack();
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & army & slot; h & army;
h & slot;
} }
}; };
@ -116,7 +117,10 @@ struct PackageApplied : public CPackForClient
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & result & packType & requestID & player; h & result;
h & packType;
h & requestID;
h & player;
} }
}; };
@ -148,7 +152,9 @@ struct PlayerBlocked : public CPackForClient
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & reason & startOrEnd & player; h & reason;
h & startOrEnd;
h & player;
} }
}; };
@ -163,7 +169,9 @@ struct PlayerCheated : public CPackForClient
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & player & losingCheatCode & winningCheatCode; h & player;
h & losingCheatCode;
h & winningCheatCode;
} }
}; };
@ -178,7 +186,8 @@ struct YourTurn : public CPackForClient
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & player & daysWithoutCastle; h & player;
h & daysWithoutCastle;
} }
}; };
@ -194,7 +203,9 @@ struct SetResources : public CPackForClient
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & abs & player & res; h & abs;
h & player;
h & res;
} }
}; };
@ -213,7 +224,10 @@ struct SetPrimSkill : public CPackForClient
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & abs & id & which & val; h & abs;
h & id;
h & which;
h & val;
} }
}; };
@ -232,7 +246,10 @@ struct SetSecSkill : public CPackForClient
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & abs & id & which & val; h & abs;
h & id;
h & which;
h & val;
} }
}; };
@ -252,7 +269,9 @@ struct HeroVisitCastle : public CPackForClient
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & flags & tid & hid; h & flags;
h & tid;
h & hid;
} }
}; };
@ -268,7 +287,9 @@ struct ChangeSpells : public CPackForClient
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & learn & hid & spells; h & learn;
h & hid;
h & spells;
} }
}; };
@ -285,7 +306,9 @@ struct SetMana : public CPackForClient
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & val & hid & absolute; h & val;
h & hid;
h & absolute;
} }
}; };
@ -301,7 +324,9 @@ struct SetMovePoints : public CPackForClient
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & val & hid & absolute; h & val;
h & hid;
h & absolute;
} }
}; };
@ -317,7 +342,10 @@ struct FoWChange : public CPackForClient
bool waitForDialogs; bool waitForDialogs;
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & tiles & player & mode & waitForDialogs; h & tiles;
h & player;
h & mode;
h & waitForDialogs;
} }
}; };
@ -336,7 +364,9 @@ struct SetAvailableHeroes : public CPackForClient
CSimpleArmy army[GameConstants::AVAILABLE_HEROES_PER_PLAYER]; CSimpleArmy army[GameConstants::AVAILABLE_HEROES_PER_PLAYER];
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & player & hid & army; h & player;
h & hid;
h & army;
} }
}; };
@ -359,7 +389,10 @@ struct GiveBonus : public CPackForClient
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & bonus & id & bdescr & who; h & bonus;
h & id;
h & bdescr;
h & who;
assert( id != -1); assert( id != -1);
} }
}; };
@ -380,7 +413,9 @@ struct ChangeObjPos : public CPackForClient
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & objid & nPos & flags; h & objid;
h & nPos;
h & flags;
} }
}; };
@ -398,7 +433,8 @@ struct PlayerEndsGame : public CPackForClient
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & player & victoryLossCheckResult; h & player;
h & victoryLossCheckResult;
} }
}; };
@ -428,7 +464,10 @@ struct RemoveBonus : public CPackForClient
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & source & id & who & whoID; h & source;
h & id;
h & who;
h & whoID;
} }
}; };
@ -464,7 +503,12 @@ struct SetCommanderProperty : public CPackForClient
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & heroid & sl & which & amount & additionalInfo & accumulatedBonus; h & heroid;
h & sl;
h & which;
h & amount;
h & additionalInfo;
h & accumulatedBonus;
} }
}; };
@ -479,7 +523,8 @@ struct AddQuest : public CPackForClient
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & player & quest; h & player;
h & quest;
} }
}; };
@ -501,7 +546,10 @@ struct UpdateArtHandlerLists : public CPackForClient
DLL_LINKAGE void applyGs(CGameState *gs); DLL_LINKAGE void applyGs(CGameState *gs);
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & treasures & minors & majors & relics; h & treasures;
h & minors;
h & majors;
h & relics;
} }
}; };
@ -527,7 +575,8 @@ struct UpdateCastleEvents : public CPackForClient
DLL_LINKAGE void applyGs(CGameState *gs); DLL_LINKAGE void applyGs(CGameState *gs);
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & town & events; h & town;
h & events;
} }
}; };
@ -541,7 +590,8 @@ struct ChangeFormation : public CPackForClient
DLL_LINKAGE void applyGs(CGameState *gs); DLL_LINKAGE void applyGs(CGameState *gs);
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & hid & formation; h & hid;
h & formation;
} }
}; };
@ -586,7 +636,13 @@ struct TryMoveHero : public CPackForClient
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & id & result & start & end & movePoints & fowRevealed & attackedFrom; h & id;
h & result;
h & start;
h & end;
h & movePoints;
h & fowRevealed;
h & attackedFrom;
} }
}; };
@ -602,7 +658,9 @@ struct NewStructures : public CPackForClient
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & tid & bid & builded; h & tid;
h & bid;
h & builded;
} }
}; };
@ -618,7 +676,9 @@ struct RazeStructures : public CPackForClient
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & tid & bid & destroyed; h & tid;
h & bid;
h & destroyed;
} }
}; };
@ -633,7 +693,8 @@ struct SetAvailableCreatures : public CPackForClient
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & tid & creatures; h & tid;
h & creatures;
} }
}; };
@ -647,7 +708,9 @@ struct SetHeroesInTown : public CPackForClient
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & tid & visiting & garrison; h & tid;
h & visiting;
h & garrison;
} }
}; };
@ -664,7 +727,10 @@ struct HeroRecruited : public CPackForClient
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & hid & tid & tile & player; h & hid;
h & tid;
h & tile;
h & player;
} }
}; };
@ -680,7 +746,8 @@ struct GiveHero : public CPackForClient
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & id & player; h & id;
h & player;
} }
}; };
@ -696,7 +763,9 @@ struct OpenWindow : public CPackForClient
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & window & id1 & id2; h & window;
h & id1;
h & id2;
} }
}; };
@ -714,7 +783,9 @@ struct NewObject : public CPackForClient
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & ID & subID & pos; h & ID;
h & subID;
h & pos;
} }
}; };
@ -729,7 +800,8 @@ struct SetAvailableArtifacts : public CPackForClient
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & id & arts; h & id;
h & arts;
} }
}; };
@ -766,7 +838,9 @@ struct ChangeStackCount : CGarrisonOperationPack
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & sl & count & absoluteValue; h & sl;
h & count;
h & absoluteValue;
} }
}; };
@ -780,7 +854,8 @@ struct SetStackType : CGarrisonOperationPack
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & sl & type; h & sl;
h & type;
} }
}; };
@ -806,7 +881,8 @@ struct SwapStacks : CGarrisonOperationPack
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & sl1 & sl2; h & sl1;
h & sl2;
} }
}; };
@ -820,7 +896,8 @@ struct InsertNewStack : CGarrisonOperationPack
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & sl & stack; h & sl;
h & stack;
} }
}; };
@ -835,7 +912,9 @@ struct RebalanceStacks : CGarrisonOperationPack
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & src & dst & count; h & src;
h & dst;
h & count;
} }
}; };
@ -863,7 +942,8 @@ struct PutArtifact : CArtifactOperationPack
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & al & art; h & al;
h & art;
} }
}; };
@ -889,7 +969,8 @@ struct MoveArtifact : CArtifactOperationPack
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & src & dst; h & src;
h & dst;
} }
}; };
@ -903,7 +984,8 @@ struct AssembledArtifact : CArtifactOperationPack
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & al & builtArt/* & constituents*/; h & al;
h & builtArt;
} }
}; };
@ -932,7 +1014,10 @@ struct HeroVisit : CPackForClient
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & hero & obj & player & starting; h & hero;
h & obj;
h & player;
h & starting;
} }
}; };
@ -949,7 +1034,9 @@ struct NewTurn : public CPackForClient
ui32 move, mana; //id is a general serial id ui32 move, mana; //id is a general serial id
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & id & move & mana; h & id;
h & move;
h & mana;
} }
bool operator<(const Hero&h)const{return id < h.id;} bool operator<(const Hero&h)const{return id < h.id;}
}; };
@ -965,7 +1052,12 @@ struct NewTurn : public CPackForClient
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & heroes & cres & res & day & specialWeek & creatureid; h & heroes;
h & cres;
h & res;
h & day;
h & specialWeek;
h & creatureid;
} }
}; };
@ -980,7 +1072,10 @@ struct InfoWindow : public CPackForClient //103 - displays simple info window
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & text & components & player & soundID; h & text;
h & components;
h & player;
h & soundID;
} }
InfoWindow() InfoWindow()
{ {
@ -1018,7 +1113,9 @@ struct SetObjectProperty : public CPackForClient
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & id & what & val; h & id;
h & what;
h & val;
} }
}; };
@ -1049,7 +1146,9 @@ struct ChangeObjectVisitors : public CPackForClient
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & object & hero & mode; h & object;
h & hero;
h & mode;
} }
}; };
@ -1083,7 +1182,10 @@ struct HeroLevelUp : public Query
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & queryID & hero & primskill & skills; h & queryID;
h & hero;
h & primskill;
h & skills;
} }
}; };
@ -1100,7 +1202,9 @@ struct CommanderLevelUp : public Query
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & queryID & hero & skills; h & queryID;
h & hero;
h & skills;
} }
}; };
@ -1143,7 +1247,12 @@ struct BlockingDialog : public Query
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & queryID & text & components & player & flags & soundID; h & queryID;
h & text;
h & components;
h & player;
h & flags;
h & soundID;
} }
}; };
@ -1156,7 +1265,10 @@ struct GarrisonDialog : public Query
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & queryID & objid & hid & removableUnits; h & queryID;
h & objid;
h & hid;
h & removableUnits;
} }
}; };
@ -1172,7 +1284,8 @@ struct ExchangeDialog : public Query
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & queryID & heroes; h & queryID;
h & heroes;
} }
}; };
@ -1195,7 +1308,11 @@ struct TeleportDialog : public Query
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & queryID & hero & channel & exits & impassable; h & queryID;
h & hero;
h & channel;
h & exits;
h & impassable;
} }
}; };
@ -1213,7 +1330,12 @@ struct MapObjectSelectDialog : public Query
template <typename Handler> void serialize(Handler & h, const int version) template <typename Handler> void serialize(Handler & h, const int version)
{ {
h & queryID & player & icon & title & description & objects; h & queryID;
h & player;
h & icon;
h & title;
h & description;
h & objects;
} }
}; };
@ -1267,7 +1389,8 @@ struct BattleSetActiveStack : public CPackForClient
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & stack & askPlayerInterface; h & stack;
h & askPlayerInterface;
} }
}; };
@ -1292,7 +1415,12 @@ struct BattleResult : public CPackForClient
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & result & winner & casualties[0] & casualties[1] & exp & artifacts; h & result;
h & winner;
h & casualties[0];
h & casualties[1];
h & exp;
h & artifacts;
} }
}; };
@ -1308,7 +1436,9 @@ struct BattleStackMoved : public CPackForClient
void applyGs(CGameState *gs); void applyGs(CGameState *gs);
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & stack & tilesToMove & distance; h & stack;
h & tilesToMove;
h & distance;
} }
}; };
@ -1329,7 +1459,10 @@ struct StacksHealedOrResurrected : public CPackForClient
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & healedStacks & lifeDrain & tentHealing & drainedFrom; h & healedStacks;
h & lifeDrain;
h & tentHealing;
h & drainedFrom;
h & cure; h & cure;
} }
}; };
@ -1387,8 +1520,14 @@ struct BattleStackAttacked : public CPackForClient
} }
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & stackAttacked & attackerID & newHealth & flags & killedAmount & damageAmount & effect h & stackAttacked;
& healedStacks; h & attackerID;
h & newHealth;
h & flags;
h & killedAmount;
h & damageAmount;
h & effect;
h & healedStacks;
h & spellID; h & spellID;
} }
bool operator<(const BattleStackAttacked &b) const bool operator<(const BattleStackAttacked &b) const
@ -1443,7 +1582,10 @@ struct BattleAttack : public CPackForClient
} }
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & bsa & stackAttacking & flags & spellID; h & bsa;
h & stackAttacking;
h & flags;
h & spellID;
} }
}; };
@ -1481,7 +1623,8 @@ struct BattleSpellCast : public CPackForClient
ui32 stack; ui32 stack;
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & effect & stack; h & effect;
h & stack;
} }
}; };
@ -1510,7 +1653,15 @@ struct BattleSpellCast : public CPackForClient
std::vector<MetaString> battleLog; std::vector<MetaString> battleLog;
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & side & id & skill & manaGained & tile & customEffects & affectedCres & casterStack & castByHero; h & side;
h & id;
h & skill;
h & manaGained;
h & tile;
h & customEffects;
h & affectedCres;
h & casterStack;
h & castByHero;
h & battleLog; h & battleLog;
} }
}; };
@ -1534,8 +1685,11 @@ struct SetStackEffect : public CPackForClient
std::vector<MetaString> battleLog; std::vector<MetaString> battleLog;
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & stacks & effect & uniqueBonuses; h & stacks;
h & cumulativeEffects & cumulativeUniqueBonuses; h & effect;
h & uniqueBonuses;
h & cumulativeEffects;
h & cumulativeUniqueBonuses;
h & battleLog; h & battleLog;
} }
}; };
@ -1562,7 +1716,8 @@ struct BattleResultsApplied : public CPackForClient
void applyCl(CClient *cl); void applyCl(CClient *cl);
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & player1 & player2; h & player1;
h & player2;
} }
}; };
@ -1593,7 +1748,9 @@ struct ELF_VISIBILITY CatapultAttack : public CPackForClient
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & destinationTile & attackedPart & damageDealt; h & destinationTile;
h & attackedPart;
h & damageDealt;
} }
}; };
@ -1609,7 +1766,8 @@ struct ELF_VISIBILITY CatapultAttack : public CPackForClient
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & attackedParts & attacker; h & attackedParts;
h & attacker;
} }
}; };
@ -1650,7 +1808,11 @@ struct BattleStackAdded : public CPackForClient
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & side & creID & amount & pos & summoned; h & side;
h & creID;
h & amount;
h & pos;
h & summoned;
} }
}; };
@ -1671,7 +1833,10 @@ struct BattleSetStackProperty : public CPackForClient
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & stackID & which & val & absolute; h & stackID;
h & which;
h & val;
h & absolute;
} }
}; };
@ -1692,7 +1857,10 @@ struct BattleTriggerEffect : public CPackForClient
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & stackID & effect & val & additionalInfo; h & stackID;
h & effect;
h & val;
h & additionalInfo;
} }
}; };
@ -1736,7 +1904,9 @@ struct ShowInInfobox : public CPackForClient
void applyCl(CClient *cl); void applyCl(CClient *cl);
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & player & c & text; h & player;
h & c;
h & text;
} }
}; };
@ -1749,7 +1919,8 @@ struct AdvmapSpellCast : public CPackForClient
void applyCl(CClient *cl); void applyCl(CClient *cl);
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & caster & spellID; h & caster;
h & spellID;
} }
}; };
@ -1765,7 +1936,8 @@ struct ShowWorldViewEx : public CPackForClient
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & player & objectPositions; h & player;
h & objectPositions;
} }
}; };
@ -1840,7 +2012,9 @@ struct MoveHero : public CPackForServer
bool applyGh(CGameHandler *gh); bool applyGh(CGameHandler *gh);
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & dest & hid & transit; h & dest;
h & hid;
h & transit;
} }
}; };
@ -1855,7 +2029,8 @@ struct CastleTeleportHero : public CPackForServer
bool applyGh(CGameHandler *gh); bool applyGh(CGameHandler *gh);
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & dest & hid; h & dest;
h & hid;
} }
}; };
@ -1872,7 +2047,12 @@ struct ArrangeStacks : public CPackForServer
bool applyGh(CGameHandler *gh); bool applyGh(CGameHandler *gh);
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & what & p1 & p2 & id1 & id2 & val; h & what;
h & p1;
h & p2;
h & id1;
h & id2;
h & val;
} }
}; };
@ -1886,7 +2066,8 @@ struct DisbandCreature : public CPackForServer
bool applyGh(CGameHandler *gh); bool applyGh(CGameHandler *gh);
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & pos & id; h & pos;
h & id;
} }
}; };
@ -1900,7 +2081,8 @@ struct BuildStructure : public CPackForServer
bool applyGh(CGameHandler *gh); bool applyGh(CGameHandler *gh);
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & tid & bid; h & tid;
h & bid;
} }
}; };
@ -1924,7 +2106,11 @@ struct RecruitCreatures : public CPackForServer
bool applyGh(CGameHandler *gh); bool applyGh(CGameHandler *gh);
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & tid & dst & crid & amount & level; h & tid;
h & dst;
h & crid;
h & amount;
h & level;
} }
}; };
@ -1939,7 +2125,9 @@ struct UpgradeCreature : public CPackForServer
bool applyGh(CGameHandler *gh); bool applyGh(CGameHandler *gh);
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & pos & id & cid; h & pos;
h & id;
h & cid;
} }
}; };
@ -1965,7 +2153,8 @@ struct ExchangeArtifacts : public CPackForServer
bool applyGh(CGameHandler *gh); bool applyGh(CGameHandler *gh);
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & src & dst; h & src;
h & dst;
} }
}; };
@ -1982,7 +2171,10 @@ struct AssembleArtifacts : public CPackForServer
bool applyGh(CGameHandler *gh); bool applyGh(CGameHandler *gh);
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & heroID & artifactSlot & assemble & assembleTo; h & heroID;
h & artifactSlot;
h & assemble;
h & assembleTo;
} }
}; };
@ -1996,7 +2188,8 @@ struct BuyArtifact : public CPackForServer
bool applyGh(CGameHandler *gh); bool applyGh(CGameHandler *gh);
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & hid & aid; h & hid;
h & aid;
} }
}; };
@ -2015,7 +2208,12 @@ struct TradeOnMarketplace : public CPackForServer
bool applyGh(CGameHandler *gh); bool applyGh(CGameHandler *gh);
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & market & hero & mode & r1 & r2 & val; h & market;
h & hero;
h & mode;
h & r1;
h & r2;
h & val;
} }
}; };
@ -2029,7 +2227,8 @@ struct SetFormation : public CPackForServer
bool applyGh(CGameHandler *gh); bool applyGh(CGameHandler *gh);
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & hid & formation; h & hid;
h & formation;
} }
}; };
@ -2044,7 +2243,9 @@ struct HireHero : public CPackForServer
bool applyGh(CGameHandler *gh); bool applyGh(CGameHandler *gh);
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & hid & tid & player; h & hid;
h & tid;
h & player;
} }
}; };
@ -2072,7 +2273,9 @@ struct QueryReply : public CPackForServer
bool applyGh(CGameHandler *gh); bool applyGh(CGameHandler *gh);
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & qid & player & reply; h & qid;
h & player;
h & reply;
} }
}; };
@ -2124,7 +2327,9 @@ struct CastAdvSpell : public CPackForServer
bool applyGh(CGameHandler *gh); bool applyGh(CGameHandler *gh);
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & hid & sid & pos; h & hid;
h & sid;
h & pos;
} }
}; };
@ -2161,7 +2366,9 @@ struct PlayerMessage : public CPackForClient, public CPackForServer
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & text & player & currObj; h & text;
h & player;
h & currObj;
} }
}; };
@ -2176,7 +2383,9 @@ struct CenterView : public CPackForClient
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & pos & player & focusTime; h & pos;
h & player;
h & focusTime;
} }
}; };
@ -2200,7 +2409,8 @@ struct ChatMessage : public CPregamePackToPropagate
void apply(CSelectionScreen *selScreen); void apply(CSelectionScreen *selScreen);
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & playerName & message; h & playerName;
h & message;
} }
}; };
@ -2221,7 +2431,8 @@ struct PlayerJoined : public CPregamePackToHost
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & playerName & connectionID; h & playerName;
h & connectionID;
} }
}; };
@ -2292,7 +2503,9 @@ struct RequestOptionsChange : public CPregamePackToHost
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & what & direction & playerID; h & what;
h & direction;
h & playerID;
} }
}; };

View File

@ -53,7 +53,10 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & exactStrings & localStrings & message & numbers; h & exactStrings;
h & localStrings;
h & message;
h & numbers;
} }
void addTxt(ui8 type, ui32 serial) void addTxt(ui8 type, ui32 serial)
{ {
@ -124,7 +127,10 @@ struct Component
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & id & subtype & val & when; h & id;
h & subtype;
h & val;
h & when;
} }
Component() Component()
:id(0), subtype(0), val(0), when(0) :id(0), subtype(0), val(0), when(0)
@ -185,7 +191,8 @@ struct ArtifactLocation
DLL_LINKAGE const ArtSlotInfo *getSlot() const; DLL_LINKAGE const ArtSlotInfo *getSlot() const;
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & artHolder & slot; h & artHolder;
h & slot;
} }
}; };
@ -204,6 +211,10 @@ public:
template <typename Handler> void serialize(Handler & h, const int version) template <typename Handler> void serialize(Handler & h, const int version)
{ {
h & stackId & delta & firstHPleft & fullUnits & resurrected; h & stackId;
h & delta;
h & firstHPleft;
h & fullUnits;
h & resurrected;
} }
}; };

View File

@ -112,7 +112,8 @@ struct StartInfo
h & mode; h & mode;
h & difficulty; h & difficulty;
h & playerInfos; h & playerInfos;
h & seedToBeUsed & seedPostInit; h & seedToBeUsed;
h & seedPostInit;
h & mapfileChecksum; h & mapfileChecksum;
h & turnTime; h & turnTime;
h & mapname; h & mapname;

View File

@ -59,7 +59,15 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & heroh & arth & creh & townh & objh & objtypeh & spellh & modh & IS_AI_ENABLED; h & heroh;
h & arth;
h & creh;
h & townh;
h & objh;
h & objtypeh;
h & spellh;
h & modh;
h & IS_AI_ENABLED;
h & bth; h & bth;
if(!h.saving) if(!h.saving)
{ {

View File

@ -25,7 +25,12 @@ struct DLL_LINKAGE BattleAction
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & side & stackNumber & actionType & destinationTile & additionalInfo & selectedStack; h & side;
h & stackNumber;
h & actionType;
h & destinationTile;
h & additionalInfo;
h & selectedStack;
} }
BattleAction(); BattleAction();

View File

@ -37,9 +37,18 @@ struct DLL_LINKAGE BattleInfo : public CBonusSystemNode, public CBattleInfoCallb
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & sides; h & sides;
h & round & activeStack & selectedStack & town & tile & stacks & obstacles h & round;
& si & battlefieldType & terrainType; h & activeStack;
h & tacticsSide & tacticDistance; h & selectedStack;
h & town;
h & tile;
h & stacks;
h & obstacles;
h & si;
h & battlefieldType;
h & terrainType;
h & tacticsSide;
h & tacticDistance;
h & static_cast<CBonusSystemNode&>(*this); h & static_cast<CBonusSystemNode&>(*this);
} }

View File

@ -26,7 +26,8 @@ struct DLL_LINKAGE AttackableTiles
std::set<BattleHex> friendlyCreaturePositions; //for Dragon Breath std::set<BattleHex> friendlyCreaturePositions; //for Dragon Breath
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & hostileCreaturePositions & friendlyCreaturePositions; h & hostileCreaturePositions;
h & friendlyCreaturePositions;
} }
}; };

View File

@ -49,7 +49,10 @@ struct DLL_LINKAGE CObstacleInstance
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & ID & pos & obstacleType & uniqueID; h & ID;
h & pos;
h & obstacleType;
h & uniqueID;
} }
}; };
@ -76,6 +79,10 @@ struct DLL_LINKAGE SpellCreatedObstacle : CObstacleInstance
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & static_cast<CObstacleInstance&>(*this); h & static_cast<CObstacleInstance&>(*this);
h & turnsRemaining & casterSpellPower & spellLevel & casterSide & visibleForAnotherSide; h & turnsRemaining;
h & casterSpellPower;
h & spellLevel;
h & casterSide;
h & visibleForAnotherSide;
} }
}; };

View File

@ -29,7 +29,11 @@ struct DLL_LINKAGE SideInBattle
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & color & hero & armyObject; h & color;
h & castSpellsCount & usedSpellsHistory & enchanterCounter; h & hero;
h & armyObject;
h & castSpellsCount;
h & usedSpellsHistory;
h & enchanterCounter;
} }
}; };

View File

@ -23,6 +23,7 @@ struct DLL_LINKAGE SiegeInfo
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & wallState & gateState; h & wallState;
h & gateState;
} }
}; };

View File

@ -133,7 +133,9 @@ public:
template <typename Handler> template <typename Handler>
void serialize(Handler &h, const int version) void serialize(Handler &h, const int version)
{ {
h & x & y & z; h & x;
h & y;
h & z;
} }
static std::array<int3, 8> getDirs() static std::array<int3, 8> getDirs()

View File

@ -41,7 +41,9 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & static_cast<CArmedInstance&>(*this); h & static_cast<CArmedInstance&>(*this);
h & daycounter & bc & resetDuration; h & daycounter;
h & bc;
h & resetDuration;
} }
friend class CBankInstanceConstructor; friend class CBankInstanceConstructor;

View File

@ -125,7 +125,9 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & magicSchoolCounter & wisdomCounter & rand; h & magicSchoolCounter;
h & wisdomCounter;
h & rand;
} }
} skillsInfo; } skillsInfo;
@ -278,10 +280,26 @@ public:
{ {
h & static_cast<CArmedInstance&>(*this); h & static_cast<CArmedInstance&>(*this);
h & static_cast<CArtifactSet&>(*this); h & static_cast<CArtifactSet&>(*this);
h & exp & level & name & biography & portrait & mana & secSkills & movement h & exp;
& sex & inTownGarrison & spells & patrol & moveDir & skillsInfo; h & level;
h & visitedTown & boat; h & name;
h & type & specialty & commander & visitedObjects; h & biography;
h & portrait;
h & mana;
h & secSkills;
h & movement;
h & sex;
h & inTownGarrison;
h & spells;
h & patrol;
h & moveDir;
h & skillsInfo;
h & visitedTown;
h & boat;
h & type;
h & specialty;
h & commander;
h & visitedObjects;
BONUS_TREE_DESERIALIZATION_FIX BONUS_TREE_DESERIALIZATION_FIX
//visitied town pointer will be restored by map serialization method //visitied town pointer will be restored by map serialization method
} }

View File

@ -44,8 +44,19 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & static_cast<CArmedInstance&>(*this); h & static_cast<CArmedInstance&>(*this);
h & message & hasGuardians & gainedExp & manaDiff & moraleDiff & luckDiff & resources & primskills h & message;
& abilities & abilityLevels & artifacts & spells & creatures; h & hasGuardians;
h & gainedExp;
h & manaDiff;
h & moraleDiff;
h & luckDiff;
h & resources;
h & primskills;
h & abilities;
h & abilityLevels;
h & artifacts;
h & spells;
h & creatures;
} }
protected: protected:
void giveContentsUpToExp(const CGHeroInstance *h) const; void giveContentsUpToExp(const CGHeroInstance *h) const;
@ -68,7 +79,10 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & static_cast<CGPandoraBox &>(*this); h & static_cast<CGPandoraBox &>(*this);
h & removeAfterVisit & availableFor & computerActivate & humanActivate; h & removeAfterVisit;
h & availableFor;
h & computerActivate;
h & humanActivate;
} }
CGEvent(); CGEvent();

View File

@ -88,7 +88,8 @@ private:
public: public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & static_cast<CArmedInstance&>(*this) & creatures; h & static_cast<CArmedInstance&>(*this);
h & creatures;
} }
}; };
@ -102,7 +103,8 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & ID & id; h & ID;
h & id;
} }
}; };
class DLL_LINKAGE COPWBonus : public CGTownBuilding class DLL_LINKAGE COPWBonus : public CGTownBuilding
@ -189,15 +191,27 @@ public:
h & static_cast<CGDwelling&>(*this); h & static_cast<CGDwelling&>(*this);
h & static_cast<IShipyard&>(*this); h & static_cast<IShipyard&>(*this);
h & static_cast<IMarket&>(*this); h & static_cast<IMarket&>(*this);
h & name & builded & destroyed & identifier; h & name;
h & garrisonHero & visitingHero; h & builded;
h & alignment & forbiddenBuildings & builtBuildings & bonusValue h & destroyed;
& possibleSpells & obligatorySpells & spells & /*strInfo & */events & bonusingBuildings; h & identifier;
h & garrisonHero;
h & visitingHero;
h & alignment;
h & forbiddenBuildings;
h & builtBuildings;
h & bonusValue;
h & possibleSpells;
h & obligatorySpells;
h & spells;
h & events;
h & bonusingBuildings;
for (std::vector<CGTownBuilding*>::iterator i = bonusingBuildings.begin(); i!=bonusingBuildings.end(); i++) for (std::vector<CGTownBuilding*>::iterator i = bonusingBuildings.begin(); i!=bonusingBuildings.end(); i++)
(*i)->town = this; (*i)->town = this;
h & town & townAndVis; h & town;
h & townAndVis;
BONUS_TREE_DESERIALIZATION_FIX BONUS_TREE_DESERIALIZATION_FIX
vstd::erase_if(builtBuildings, [this](BuildingID building) -> bool vstd::erase_if(builtBuildings, [this](BuildingID building) -> bool

View File

@ -43,7 +43,10 @@ struct DLL_LINKAGE RandomMapInfo
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & value & mapLimit & zoneLimit & rarity; h & value;
h & mapLimit;
h & zoneLimit;
h & rarity;
} }
}; };
@ -159,10 +162,15 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & type & subtype & templates & rmgInfo & objectName; h & type;
h & subtype;
h & templates;
h & rmgInfo;
h & objectName;
if(version >= 759) if(version >= 759)
{ {
h & typeName & subTypeName; h & typeName;
h & subTypeName;
} }
} }
}; };
@ -186,10 +194,14 @@ class DLL_LINKAGE CObjectClassesHandler : public IHandlerBase
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & name & handlerName & base & subObjects; h & name;
h & handlerName;
h & base;
h & subObjects;
if(version >= 759) if(version >= 759)
{ {
h & identifier & subIds; h & identifier;
h & subIds;
} }
} }
}; };

View File

@ -179,10 +179,18 @@ public:
{ {
if(version >= 759) if(version >= 759)
{ {
h & instanceName & typeName & subTypeName; h & instanceName;
h & typeName;
h & subTypeName;
} }
h & pos & ID & subID & id & tempOwner & blockVisit & appearance; h & pos;
h & ID;
h & subID;
h & id;
h & tempOwner;
h & blockVisit;
h & appearance;
//definfo is handled by map serializer //definfo is handled by map serializer
} }

View File

@ -66,10 +66,26 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & qid & missionType & progress & lastDay & m13489val & m2stats & m5arts & m6creatures & m7resources h & qid;
& textOption & stackToKill & stackDirection & heroName & heroPortrait h & missionType;
& firstVisitText & nextVisitText & completedText & isCustomFirst h & progress;
& isCustomNext & isCustomComplete; h & lastDay;
h & m13489val;
h & m2stats;
h & m5arts;
h & m6creatures;
h & m7resources;
h & textOption;
h & stackToKill;
h & stackDirection;
h & heroName;
h & heroPortrait;
h & firstVisitText;
h & nextVisitText;
h & completedText;
h & isCustomFirst;
h & isCustomNext;
h & isCustomComplete;
if(version >= 757) if(version >= 757)
{ {
h & completedOption; h & completedOption;
@ -131,8 +147,12 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & static_cast<CArmedInstance&>(*this) & static_cast<IQuestObject&>(*this); h & static_cast<CArmedInstance&>(*this);
h & rewardType & rID & rVal & seerName; h & static_cast<IQuestObject&>(*this);
h & rewardType;
h & rID;
h & rVal;
h & seerName;
} }
protected: protected:
static const int OBJPROP_VISITED = 10; static const int OBJPROP_VISITED = 10;

View File

@ -57,8 +57,14 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & numOfGrants & dayOfWeek & minLevel & resources; h & numOfGrants;
h & primary & secondary & artifacts & creatures; h & dayOfWeek;
h & minLevel;
h & resources;
h & primary;
h & secondary;
h & artifacts;
h & creatures;
} }
}; };
@ -121,11 +127,21 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & resources & extraComponents & removeObject; h & resources;
h & manaPercentage & movePercentage; h & extraComponents;
h & gainedExp & gainedLevels & manaDiff & movePoints; h & removeObject;
h & primary & secondary & bonuses; h & manaPercentage;
h & artifacts & spells & creatures; h & movePercentage;
h & gainedExp;
h & gainedLevels;
h & manaDiff;
h & movePoints;
h & primary;
h & secondary;
h & bonuses;
h & artifacts;
h & spells;
h & creatures;
} }
}; };
@ -151,7 +167,11 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & limiter & reward & message & selectChance & numOfGrants; h & limiter;
h & reward;
h & message;
h & selectChance;
h & numOfGrants;
} }
}; };
@ -244,9 +264,16 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & static_cast<CArmedInstance&>(*this); h & static_cast<CArmedInstance&>(*this);
h & info & canRefuse & resetDuration; h & info;
h & onSelect & onVisited & onEmpty & visitMode; h & canRefuse;
h & soundID & selectMode & selectedReward; h & resetDuration;
h & onSelect;
h & onVisited;
h & onEmpty;
h & visitMode;
h & soundID;
h & selectMode;
h & selectedReward;
} }
// for configuration/object setup // for configuration/object setup

View File

@ -76,7 +76,9 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & filtersJson & faction & filters; h & filtersJson;
h & faction;
h & filters;
h & static_cast<CDefaultObjectTypeHandler<CGTownInstance>&>(*this); h & static_cast<CDefaultObjectTypeHandler<CGTownInstance>&>(*this);
} }
}; };
@ -99,7 +101,9 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & filtersJson & heroClass & filters; h & filtersJson;
h & heroClass;
h & filters;
h & static_cast<CDefaultObjectTypeHandler<CGHeroInstance>&>(*this); h & static_cast<CDefaultObjectTypeHandler<CGHeroInstance>&>(*this);
} }
}; };
@ -125,7 +129,8 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & availableCreatures & guards; h & availableCreatures;
h & guards;
h & static_cast<CDefaultObjectTypeHandler<CGDwelling>&>(*this); h & static_cast<CDefaultObjectTypeHandler<CGDwelling>&>(*this);
} }
}; };
@ -145,7 +150,15 @@ struct BankConfig
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & chance & upgradeChance & guards & combatValue & resources & creatures & artifacts & value & spells; h & chance;
h & upgradeChance;
h & guards;
h & combatValue;
h & resources;
h & creatures;
h & artifacts;
h & value;
h & spells;
} }
}; };
@ -190,7 +203,8 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & levels & bankResetDuration; h & levels;
h & bankResetDuration;
h & static_cast<CDefaultObjectTypeHandler<CBank>&>(*this); h & static_cast<CDefaultObjectTypeHandler<CBank>&>(*this);
} }
}; };

View File

@ -74,15 +74,24 @@ public:
ui8 upgrade; //random seed used to determine number of stacks and is there's upgraded stack ui8 upgrade; //random seed used to determine number of stacks and is there's upgraded stack
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & basicType & upgrade; h & basicType;
h & upgrade;
} }
} formation; } formation;
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & static_cast<CArmedInstance&>(*this); h & static_cast<CArmedInstance&>(*this);
h & identifier & character & message & resources & gainedArtifact & neverFlees & notGrowingTeam & temppower; h & identifier;
h & refusedJoining & formation; h & character;
h & message;
h & resources;
h & gainedArtifact;
h & neverFlees;
h & notGrowingTeam;
h & temppower;
h & refusedJoining;
h & formation;
} }
protected: protected:
void setPropertyDer(ui8 what, ui32 val) override; void setPropertyDer(ui8 what, ui32 val) override;
@ -129,7 +138,8 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & static_cast<CTeamVisited&>(*this); h & static_cast<CTeamVisited&>(*this);
h & allowedAbilities & ability; h & allowedAbilities;
h & ability;
} }
protected: protected:
void serializeJsonOptions(JsonSerializeFormat & handler) override; void serializeJsonOptions(JsonSerializeFormat & handler) override;
@ -148,7 +158,8 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & static_cast<CGObjectInstance&>(*this); h & static_cast<CGObjectInstance&>(*this);
h & bonusType & bonusID; h & bonusType;
h & bonusID;
} }
protected: protected:
void serializeJsonOptions(JsonSerializeFormat & handler) override; void serializeJsonOptions(JsonSerializeFormat & handler) override;
@ -194,7 +205,8 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & static_cast<CArmedInstance&>(*this); h & static_cast<CArmedInstance&>(*this);
h & message & storedArtifact; h & message;
h & storedArtifact;
} }
protected: protected:
void serializeJsonOptions(JsonSerializeFormat & handler) override; void serializeJsonOptions(JsonSerializeFormat & handler) override;
@ -218,7 +230,8 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & static_cast<CArmedInstance&>(*this); h & static_cast<CArmedInstance&>(*this);
h & amount & message; h & amount;
h & message;
} }
protected: protected:
void serializeJsonOptions(JsonSerializeFormat & handler) override; void serializeJsonOptions(JsonSerializeFormat & handler) override;
@ -265,7 +278,8 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & static_cast<CArmedInstance&>(*this); h & static_cast<CArmedInstance&>(*this);
h & producedResource & producedQuantity; h & producedResource;
h & producedQuantity;
} }
ui32 defaultResProduction(); ui32 defaultResProduction();
protected: protected:
@ -284,7 +298,9 @@ struct DLL_LINKAGE TeleportChannel
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & entrances & exits & passability; h & entrances;
h & exits;
h & passability;
} }
}; };
@ -320,7 +336,9 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & type & channel & static_cast<CGObjectInstance&>(*this); h & type;
h & channel;
h & static_cast<CGObjectInstance&>(*this);
} }
}; };
@ -418,7 +436,9 @@ public:
} }
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & static_cast<CGObjectInstance&>(*this) & direction & hero; h & static_cast<CGObjectInstance&>(*this);
h & direction;
h & hero;
} }
}; };

View File

@ -88,8 +88,14 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & usedTiles & allowedTerrains & animationFile & stringID; h & usedTiles;
h & id & subid & printPriority & visitDir; h & allowedTerrains;
h & animationFile;
h & stringID;
h & id;
h & subid;
h & printPriority;
h & visitDir;
if(version >= 770) if(version >= 770)
{ {
h & editorAnimationFile; h & editorAnimationFile;

View File

@ -42,7 +42,14 @@ public:
template <typename Handler> void serialize(Handler &h, const int formatVersion) template <typename Handler> void serialize(Handler &h, const int formatVersion)
{ {
h & version & mapVersion & name & description & difficultyChoosenByPlayer & music & filename & loadFromLod; h & version;
h & mapVersion;
h & name;
h & description;
h & difficultyChoosenByPlayer;
h & music;
h & filename;
h & loadFromLod;
} }
}; };
@ -70,7 +77,10 @@ public:
template <typename Handler> void serialize(Handler &h, const int formatVersion) template <typename Handler> void serialize(Handler &h, const int formatVersion)
{ {
h & type & info1 & info2 & info3; h & type;
h & info1;
h & info2;
h & info3;
} }
}; };
@ -80,7 +90,12 @@ public:
template <typename Handler> void serialize(Handler &h, const int formatVersion) template <typename Handler> void serialize(Handler &h, const int formatVersion)
{ {
h & whatHeroKeeps & monstersKeptByHero & artifsKeptByHero & startOptions & playerColor & bonusesToChoose; h & whatHeroKeeps;
h & monstersKeptByHero;
h & artifsKeptByHero;
h & startOptions;
h & playerColor;
h & bonusesToChoose;
} }
}; };
@ -99,7 +114,10 @@ public:
template <typename Handler> void serialize(Handler &h, const int formatVersion) template <typename Handler> void serialize(Handler &h, const int formatVersion)
{ {
h & hasPrologEpilog & prologVideo & prologMusic & prologText; h & hasPrologEpilog;
h & prologVideo;
h & prologMusic;
h & prologText;
} }
}; };
@ -128,8 +146,20 @@ public:
template <typename Handler> void serialize(Handler &h, const int formatVersion) template <typename Handler> void serialize(Handler &h, const int formatVersion)
{ {
h & mapName & scenarioName & packedMapSize & preconditionRegions & regionColor & difficulty & conquered & regionText & h & mapName;
prolog & epilog & travelOptions & crossoverHeroes & placedCrossoverHeroes & keepHeroes; h & scenarioName;
h & packedMapSize;
h & preconditionRegions;
h & regionColor;
h & difficulty;
h & conquered;
h & regionText;
h & prolog;
h & epilog;
h & travelOptions;
h & crossoverHeroes;
h & placedCrossoverHeroes;
h & keepHeroes;
} }
}; };
@ -142,7 +172,9 @@ public:
template <typename Handler> void serialize(Handler &h, const int formatVersion) template <typename Handler> void serialize(Handler &h, const int formatVersion)
{ {
h & header & scenarios & mapPieces; h & header;
h & scenarios;
h & mapPieces;
} }
bool conquerable(int whichScenario) const; bool conquerable(int whichScenario) const;
@ -173,7 +205,11 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & camp & campaignName & mapsRemaining & mapsConquered & currentMap; h & camp;
h & campaignName;
h & mapsRemaining;
h & mapsConquered;
h & currentMap;
h & chosenCampaignBonuses; h & chosenCampaignBonuses;
} }
}; };

View File

@ -43,7 +43,8 @@ struct DLL_LINKAGE SHeroName
template <typename Handler> template <typename Handler>
void serialize(Handler & h, const int version) void serialize(Handler & h, const int version)
{ {
h & heroId & heroName; h & heroId;
h & heroName;
} }
}; };
@ -93,9 +94,22 @@ struct DLL_LINKAGE PlayerInfo
template <typename Handler> template <typename Handler>
void serialize(Handler & h, const int version) void serialize(Handler & h, const int version)
{ {
h & p7 & hasRandomHero & mainCustomHeroId & canHumanPlay & canComputerPlay & aiTactic & allowedFactions & isFactionRandom & h & p7;
mainCustomHeroPortrait & mainCustomHeroName & heroesNames & hasMainTown & generateHeroAtMainTown & h & hasRandomHero;
posOfMainTown & team & generateHero; h & mainCustomHeroId;
h & canHumanPlay;
h & canComputerPlay;
h & aiTactic;
h & allowedFactions;
h & isFactionRandom;
h & mainCustomHeroPortrait;
h & mainCustomHeroName;
h & heroesNames;
h & hasMainTown;
h & generateHeroAtMainTown;
h & posOfMainTown;
h & team;
h & generateHero;
if(version >= 770) if(version >= 770)
{ {
@ -156,8 +170,10 @@ struct DLL_LINKAGE EventCondition
h & objectInstanceName; h & objectInstanceName;
} }
if(version >= 770) if(version >= 770)
{
h & metaType; h & metaType;
} }
}
}; };
typedef LogicalExpression<EventCondition> EventExpression; typedef LogicalExpression<EventCondition> EventExpression;
@ -179,7 +195,8 @@ struct DLL_LINKAGE EventEffect
template <typename Handler> template <typename Handler>
void serialize(Handler & h, const int version) void serialize(Handler & h, const int version)
{ {
h & type & toOtherMessage; h & type;
h & toOtherMessage;
} }
}; };
@ -206,7 +223,8 @@ struct DLL_LINKAGE TriggeredEvent
h & identifier; h & identifier;
h & trigger; h & trigger;
h & description; h & description;
h & onFulfill & effect; h & onFulfill;
h & effect;
} }
}; };
@ -222,7 +240,8 @@ struct DLL_LINKAGE Rumor
template <typename Handler> template <typename Handler>
void serialize(Handler & h, const int version) void serialize(Handler & h, const int version)
{ {
h & name & text; h & name;
h & text;
} }
void serializeJson(JsonSerializeFormat & handler); void serializeJson(JsonSerializeFormat & handler);
@ -241,7 +260,10 @@ struct DLL_LINKAGE DisposedHero
template <typename Handler> template <typename Handler>
void serialize(Handler & h, const int version) void serialize(Handler & h, const int version)
{ {
h & heroId & portrait & name & players; h & heroId;
h & portrait;
h & name;
h & players;
} }
}; };
@ -301,9 +323,23 @@ public:
template <typename Handler> template <typename Handler>
void serialize(Handler & h, const int Version) void serialize(Handler & h, const int Version)
{ {
h & version & name & description & width & height & twoLevel & difficulty & levelLimit & areAnyPlayers; h & version;
h & players & howManyTeams & allowedHeroes & triggeredEvents; h & name;
h & victoryMessage & victoryIconIndex & defeatMessage & defeatIconIndex; h & description;
h & width;
h & height;
h & twoLevel;
h & difficulty;
h & levelLimit;
h & areAnyPlayers;
h & players;
h & howManyTeams;
h & allowedHeroes;
h & triggeredEvents;
h & victoryMessage;
h & victoryIconIndex;
h & defeatMessage;
h & defeatIconIndex;
} }
}; };
@ -385,8 +421,15 @@ public:
void serialize(Handler &h, const int formatVersion) void serialize(Handler &h, const int formatVersion)
{ {
h & static_cast<CMapHeader&>(*this); h & static_cast<CMapHeader&>(*this);
h & rumors & allowedSpell & allowedAbilities & allowedArtifact & events & grailPos; h & rumors;
h & artInstances & quests & allHeroes; h & allowedSpell;
h & allowedAbilities;
h & allowedArtifact;
h & events;
h & grailPos;
h & artInstances;
h & quests;
h & allHeroes;
h & questIdentifierToId; h & questIdentifierToId;
//TODO: viccondetails //TODO: viccondetails
@ -435,12 +478,16 @@ public:
} }
h & objects; h & objects;
h & heroesOnMap & teleportChannels & towns & artInstances; h & heroesOnMap;
h & teleportChannels;
h & towns;
h & artInstances;
// static members // static members
h & CGKeys::playerKeyMap; h & CGKeys::playerKeyMap;
h & CGMagi::eyelist; h & CGMagi::eyelist;
h & CGObelisk::obeliskCount & CGObelisk::visited; h & CGObelisk::obeliskCount;
h & CGObelisk::visited;
h & CGTownInstance::merchantArtifacts; h & CGTownInstance::merchantArtifacts;
h & CGTownInstance::universitySkills; h & CGTownInstance::universitySkills;

View File

@ -32,8 +32,14 @@ public:
template <typename Handler> template <typename Handler>
void serialize(Handler & h, const int version) void serialize(Handler & h, const int version)
{ {
h & name & message & resources h & name;
& players & humanAffected & computerAffected & firstOccurence & nextOccurence; h & message;
h & resources;
h & players;
h & humanAffected;
h & computerAffected;
h & firstOccurence;
h & nextOccurence;
} }
}; };
@ -51,7 +57,8 @@ public:
void serialize(Handler & h, const int version) void serialize(Handler & h, const int version)
{ {
h & static_cast<CMapEvent &>(*this); h & static_cast<CMapEvent &>(*this);
h & buildings & creatures; h & buildings;
h & creatures;
} }
}; };
@ -91,8 +98,16 @@ struct DLL_LINKAGE TerrainTile
template <typename Handler> template <typename Handler>
void serialize(Handler & h, const int version) void serialize(Handler & h, const int version)
{ {
h & terType & terView & riverType & riverDir & roadType &roadDir & extTileFlags; h & terType;
h & visitable & blocked; h & terView;
h & visitableObjects & blockingObjects; h & riverType;
h & riverDir;
h & roadType;
h & roadDir;
h & extTileFlags;
h & visitable;
h & blocked;
h & visitableObjects;
h & blockingObjects;
} }
}; };

View File

@ -51,7 +51,14 @@ public:
template <typename Handler> void serialize(Handler &h, const int Version) template <typename Handler> void serialize(Handler &h, const int Version)
{ {
h & mapHeader & campaignHeader & scenarioOpts & fileURI & date & playerAmnt & humanPlayers; h & mapHeader;
h & actualHumanPlayers & isRandomMap; h & campaignHeader;
h & scenarioOpts;
h & fileURI;
h & date;
h & playerAmnt;
h & humanPlayers;
h & actualHumanPlayers;
h & isRandomMap;
} }
}; };

View File

@ -87,7 +87,9 @@ public:
template <typename Handler> template <typename Handler>
void serialize(Handler & h, const int version) void serialize(Handler & h, const int version)
{ {
h & color & startingTown & playerType; h & color;
h & startingTown;
h & playerType;
} }
}; };
@ -174,8 +176,17 @@ public:
template <typename Handler> template <typename Handler>
void serialize(Handler & h, const int version) void serialize(Handler & h, const int version)
{ {
h & width & height & hasTwoLevels & playerCount & teamCount & compOnlyPlayerCount; h & width;
h & compOnlyTeamCount & waterContent & monsterStrength & players & humanPlayersCount; h & height;
h & hasTwoLevels;
h & playerCount;
h & teamCount;
h & compOnlyPlayerCount;
h & compOnlyTeamCount;
h & waterContent;
h & monsterStrength;
h & players;
h & humanPlayersCount;
//TODO add name of template to class, enables selection of a template by a user //TODO add name of template to class, enables selection of a template by a user
} }
}; };

View File

@ -145,7 +145,9 @@ public:
template <typename Handler> void serialize(Handler &h, const float version) template <typename Handler> void serialize(Handler &h, const float version)
{ {
h & x & y & z; h & x;
h & y;
h & z;
} }
}; };

View File

@ -61,7 +61,8 @@ public:
template <typename Handler> void serialize(Handler & h, const int version) template <typename Handler> void serialize(Handler & h, const int version)
{ {
h & minimumAngle & resourceName; h & minimumAngle;
h & resourceName;
} }
}; };
@ -75,7 +76,8 @@ public:
template <typename Handler> void serialize(Handler & h, const int version) template <typename Handler> void serialize(Handler & h, const int version)
{ {
h & resourceName & verticalPosition; h & resourceName;
h & verticalPosition;
if(version >= 754) //save format backward compatibility if(version >= 754) //save format backward compatibility
{ {
h & pause; h & pause;
@ -110,10 +112,14 @@ public:
template <typename Handler> void serialize(Handler & h, const int version) template <typename Handler> void serialize(Handler & h, const int version)
{ {
h & projectile & hit & cast; h & projectile;
h & hit;
h & cast;
if(version >= 762) if(version >= 762)
{
h & affect; h & affect;
} }
}
std::string selectProjectile(const double angle) const; std::string selectProjectile(const double angle) const;
} animationInfo; } animationInfo;
@ -138,11 +144,17 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & description & cost & power & AIValue & smartTarget & range; h & description;
h & cost;
h & power;
h & AIValue;
h & smartTarget;
h & range;
if(version >= 773) if(version >= 773)
{ {
h & effects & cumulativeEffects; h & effects;
h & cumulativeEffects;
} }
else else
{ {
@ -159,7 +171,8 @@ public:
} }
} }
h & clearTarget & clearAffected; h & clearTarget;
h & clearAffected;
} }
}; };
@ -267,28 +280,50 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & identifier & id & name & level & power h & identifier;
& probabilities & attributes & combatSpell & creatureAbility & positiveness & counteredSpells; h & id;
h & isRising & isDamage & isOffensive; h & name;
h & level;
h & power;
h & probabilities;
h & attributes;
h & combatSpell;
h & creatureAbility;
h & positiveness;
h & counteredSpells;
h & isRising;
h & isDamage;
h & isOffensive;
h & targetType; h & targetType;
h & immunities & limiters & absoluteImmunities & absoluteLimiters; h & immunities;
h & limiters;
h & absoluteImmunities;
h & absoluteLimiters;
h & iconImmune; h & iconImmune;
h & defaultProbability; h & defaultProbability;
h & isSpecial; h & isSpecial;
h & castSound & iconBook & iconEffect & iconScenarioBonus & iconScroll; h & castSound;
h & iconBook;
h & iconEffect;
h & iconScenarioBonus;
h & iconScroll;
h & levels; h & levels;
h & school; h & school;
h & animationInfo; h & animationInfo;
if(!h.saving) if(!h.saving)
{
setup(); setup();
}
//backward compatibility //backward compatibility
//can not be added to level structure as level structure does not know spell id //can not be added to level structure as level structure does not know spell id
if(!h.saving && version < 773) if(!h.saving && version < 773)
{
if(id == SpellID::DISRUPTING_RAY || id == SpellID::ACID_BREATH_DEFENSE) if(id == SpellID::DISRUPTING_RAY || id == SpellID::ACID_BREATH_DEFENSE)
for(auto & level : levels) for(auto & level : levels)
std::swap(level.effects, level.cumulativeEffects); std::swap(level.effects, level.cumulativeEffects);
} }
}
friend class CSpellHandler; friend class CSpellHandler;
friend class Graphics; friend class Graphics;
public: public:

View File

@ -26,7 +26,10 @@
template <typename Handler> void serialize(Handler & h, const int version) template <typename Handler> void serialize(Handler & h, const int version)
{ {
h & pos & id & subId & owner; h & pos;
h & id;
h & subId;
h & owner;
} }
}; };

View File

@ -235,7 +235,9 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & QID & states & finishingBattle; h & QID;
h & states;
h & finishingBattle;
if(version >= 761) if(version >= 761)
{ {
h & getRandomGenerator(); h & getRandomGenerator();
@ -263,7 +265,10 @@ public:
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & winnerHero & loserHero & victor & loser; h & winnerHero;
h & loserHero;
h & victor;
h & loser;
if(version < 774 && !h.saving) if(version < 774 && !h.saving)
{ {
bool duel; bool duel;