1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-08-10 22:31:40 +02:00

Merge pull request #5700 from IvanSavenko/gamestate_pack_visitor

Remove CPack::applyGs method in favor of GameStatePackVisitor class
This commit is contained in:
Ivan Savenko
2025-05-14 11:53:15 +03:00
committed by GitHub
23 changed files with 1748 additions and 1802 deletions

View File

@@ -15,6 +15,7 @@
#include "../../lib/battle/BattleLayout.h"
#include "../../lib/CStack.h"
#include "../../lib/ScriptHandler.h"
#include "../../lib/gameState/GameStatePackVisitor.h"
#include "../../lib/networkPacks/PacksForClientBattle.h"
#include "../../lib/networkPacks/SetStackEffect.h"
@@ -538,37 +539,44 @@ void HypotheticBattle::HypotheticServerCallback::apply(CPackForClient & pack)
void HypotheticBattle::HypotheticServerCallback::apply(BattleLogMessage & pack)
{
pack.applyBattle(owner);
BattleStatePackVisitor visitor(*owner);
pack.visit(visitor);
}
void HypotheticBattle::HypotheticServerCallback::apply(BattleStackMoved & pack)
{
pack.applyBattle(owner);
BattleStatePackVisitor visitor(*owner);
pack.visit(visitor);
}
void HypotheticBattle::HypotheticServerCallback::apply(BattleUnitsChanged & pack)
{
pack.applyBattle(owner);
BattleStatePackVisitor visitor(*owner);
pack.visit(visitor);
}
void HypotheticBattle::HypotheticServerCallback::apply(SetStackEffect & pack)
{
pack.applyBattle(owner);
BattleStatePackVisitor visitor(*owner);
pack.visit(visitor);
}
void HypotheticBattle::HypotheticServerCallback::apply(StacksInjured & pack)
{
pack.applyBattle(owner);
BattleStatePackVisitor visitor(*owner);
pack.visit(visitor);
}
void HypotheticBattle::HypotheticServerCallback::apply(BattleObstaclesChanged & pack)
{
pack.applyBattle(owner);
BattleStatePackVisitor visitor(*owner);
pack.visit(visitor);
}
void HypotheticBattle::HypotheticServerCallback::apply(CatapultAttack & pack)
{
pack.applyBattle(owner);
BattleStatePackVisitor visitor(*owner);
pack.visit(visitor);
}
HypotheticBattle::HypotheticEnvironment::HypotheticEnvironment(HypotheticBattle * owner_, const Environment * upperEnvironment)

View File

@@ -47,7 +47,7 @@ public:
void visitRebalanceStacks(RebalanceStacks & pack) override;
void visitBulkRebalanceStacks(BulkRebalanceStacks & pack) override;
void visitPutArtifact(PutArtifact & pack) override;
void visitEraseArtifact(BulkEraseArtifacts & pack) override;
void visitBulkEraseArtifacts(BulkEraseArtifacts & pack) override;
void visitBulkMoveArtifacts(BulkMoveArtifacts & pack) override;
void visitAssembledArtifact(AssembledArtifact & pack) override;
void visitDisassembledArtifact(DisassembledArtifact & pack) override;

View File

@@ -270,7 +270,7 @@ void ApplyClientNetPackVisitor::visitPutArtifact(PutArtifact & pack)
callInterfaceIfPresent(cl, cl.getOwner(pack.al.artHolder), &IGameEventsReceiver::askToAssembleArtifact, pack.al);
}
void ApplyClientNetPackVisitor::visitEraseArtifact(BulkEraseArtifacts & pack)
void ApplyClientNetPackVisitor::visitBulkEraseArtifacts(BulkEraseArtifacts & pack)
{
for(const auto & slotErase : pack.posPack)
callInterfaceIfPresent(cl, cl.getOwner(pack.artHolder), &IGameEventsReceiver::artifactRemoved, ArtifactLocation(pack.artHolder, slotErase));

View File

@@ -121,6 +121,7 @@ set(lib_MAIN_SRCS
gameState/CGameState.cpp
gameState/CGameStateCampaign.cpp
gameState/GameStatePackVisitor.cpp
gameState/HighScore.cpp
gameState/InfoAboutArmy.cpp
gameState/QuestInfo.cpp
@@ -525,6 +526,7 @@ set(lib_MAIN_HEADERS
gameState/CGameState.h
gameState/CGameStateCampaign.h
gameState/EVictoryLossCheckResult.h
gameState/GameStatePackVisitor.h
gameState/HighScore.h
gameState/InfoAboutArmy.h
gameState/RumorState.h

View File

@@ -14,6 +14,7 @@
#include "InfoAboutArmy.h"
#include "TavernHeroesPool.h"
#include "CGameStateCampaign.h"
#include "GameStatePackVisitor.h"
#include "SThievesGuildInfo.h"
#include "QuestInfo.h"
@@ -1121,7 +1122,8 @@ PlayerRelations CGameState::getPlayerRelations( PlayerColor color1, PlayerColor
void CGameState::apply(CPackForClient & pack)
{
pack.applyGs(this);
GameStatePackVisitor visitor(*this);
pack.visit(visitor);
}
void CGameState::calculatePaths(const std::shared_ptr<PathfinderConfig> & config) const

View File

@@ -18,11 +18,6 @@
#include "RumorState.h"
#include "GameStatistics.h"
namespace boost
{
class shared_mutex;
}
VCMI_LIB_NAMESPACE_BEGIN
class EVictoryLossCheckResult;

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,121 @@
/*
* GameStatePackVisitor.h, part of VCMI engine
*
* Authors: listed in file AUTHORS in main folder
*
* License: GNU General Public License v2.0 or later
* Full text of license available in license.txt file, in main folder
*
*/
#pragma once
#include "../networkPacks/NetPackVisitor.h"
VCMI_LIB_NAMESPACE_BEGIN
class CGameState;
class GameStatePackVisitor final : public ICPackVisitor
{
private:
CGameState & gs;
public:
GameStatePackVisitor(CGameState & gs)
: gs(gs)
{
}
void visitSetResources(SetResources & pack) override;
void visitSetPrimSkill(SetPrimSkill & pack) override;
void visitSetSecSkill(SetSecSkill & pack) override;
void visitHeroVisitCastle(HeroVisitCastle & pack) override;
void visitSetMana(SetMana & pack) override;
void visitSetMovePoints(SetMovePoints & pack) override;
void visitSetResearchedSpells(SetResearchedSpells & pack) override;
void visitFoWChange(FoWChange & pack) override;
void visitChangeStackCount(ChangeStackCount & pack) override;
void visitSetStackType(SetStackType & pack) override;
void visitEraseStack(EraseStack & pack) override;
void visitSwapStacks(SwapStacks & pack) override;
void visitInsertNewStack(InsertNewStack & pack) override;
void visitRebalanceStacks(RebalanceStacks & pack) override;
void visitBulkRebalanceStacks(BulkRebalanceStacks & pack) override;
void visitPutArtifact(PutArtifact & pack) override;
void visitBulkEraseArtifacts(BulkEraseArtifacts & pack) override;
void visitBulkMoveArtifacts(BulkMoveArtifacts & pack) override;
void visitAssembledArtifact(AssembledArtifact & pack) override;
void visitDisassembledArtifact(DisassembledArtifact & pack) override;
void visitHeroVisit(HeroVisit & pack) override;
void visitNewTurn(NewTurn & pack) override;
void visitGiveBonus(GiveBonus & pack) override;
void visitChangeObjPos(ChangeObjPos & pack) override;
void visitPlayerEndsTurn(PlayerEndsTurn & pack) override;
void visitPlayerEndsGame(PlayerEndsGame & pack) override;
void visitPlayerReinitInterface(PlayerReinitInterface & pack) override;
void visitRemoveBonus(RemoveBonus & pack) override;
void visitRemoveObject(RemoveObject & pack) override;
void visitTryMoveHero(TryMoveHero & pack) override;
void visitNewStructures(NewStructures & pack) override;
void visitRazeStructures(RazeStructures & pack) override;
void visitSetAvailableCreatures(SetAvailableCreatures & pack) override;
void visitSetHeroesInTown(SetHeroesInTown & pack) override;
void visitHeroRecruited(HeroRecruited & pack) override;
void visitGiveHero(GiveHero & pack) override;
void visitSetObjectProperty(SetObjectProperty & pack) override;
void visitHeroLevelUp(HeroLevelUp & pack) override;
void visitCommanderLevelUp(CommanderLevelUp & pack) override;
void visitBattleStart(BattleStart & pack) override;
void visitBattleSetActiveStack(BattleSetActiveStack & pack) override;
void visitBattleTriggerEffect(BattleTriggerEffect & pack) override;
void visitBattleAttack(BattleAttack & pack) override;
void visitBattleSpellCast(BattleSpellCast & pack) override;
void visitSetStackEffect(SetStackEffect & pack) override;
void visitStacksInjured(StacksInjured & pack) override;
void visitBattleUnitsChanged(BattleUnitsChanged & pack) override;
void visitBattleObstaclesChanged(BattleObstaclesChanged & pack) override;
void visitBattleStackMoved(BattleStackMoved & pack) override;
void visitCatapultAttack(CatapultAttack & pack) override;
void visitPlayerStartsTurn(PlayerStartsTurn & pack) override;
void visitNewObject(NewObject & pack) override;
void visitSetAvailableArtifacts(SetAvailableArtifacts & pack) override;
void visitEntitiesChanged(EntitiesChanged & pack) override;
void visitSetCommanderProperty(SetCommanderProperty & pack) override;
void visitAddQuest(AddQuest & pack) override;
void visitUpdateArtHandlerLists(UpdateArtHandlerLists & pack) override;
void visitChangeFormation(ChangeFormation & pack) override;
void visitChangeSpells(ChangeSpells & pack) override;
void visitSetAvailableHero(SetAvailableHero & pack) override;
void visitChangeObjectVisitors(ChangeObjectVisitors & pack) override;
void visitChangeArtifactsCostume(ChangeArtifactsCostume & pack) override;
void visitNewArtifact(NewArtifact & pack) override;
void visitBattleUpdateGateState(BattleUpdateGateState & pack) override;
void visitPlayerCheated(PlayerCheated & pack) override;
void visitDaysWithoutTown(DaysWithoutTown & pack) override;
void visitStartAction(StartAction & pack) override;
void visitSetRewardableConfiguration(SetRewardableConfiguration & pack) override;
void visitBattleSetStackProperty(BattleSetStackProperty & pack) override;
void visitBattleNextRound(BattleNextRound & pack) override;
void visitBattleCancelled(BattleCancelled & pack) override;
void visitBattleResultsApplied(BattleResultsApplied & pack) override;
void visitBattleResultAccepted(BattleResultAccepted & pack) override;
void visitTurnTimeUpdate(TurnTimeUpdate & pack) override;
};
class DLL_LINKAGE BattleStatePackVisitor final : public ICPackVisitor
{
IBattleState & battleState;
public:
BattleStatePackVisitor(IBattleState & battleState)
:battleState(battleState)
{}
void visitSetStackEffect(SetStackEffect & pack) override;
void visitStacksInjured(StacksInjured & pack) override;
void visitBattleUnitsChanged(BattleUnitsChanged & pack) override;
void visitBattleObstaclesChanged(BattleObstaclesChanged & pack) override;
void visitCatapultAttack(CatapultAttack & pack) override;
void visitBattleStackMoved(BattleStackMoved & pack) override;
};
VCMI_LIB_NAMESPACE_END

View File

@@ -15,6 +15,7 @@
#include "../callback/IGameCallback.h"
#include "../networkPacks/PacksForClient.h"
#include "../mapObjectConstructors/FlaggableInstanceConstructor.h"
#include "../gameState/GameStatePackVisitor.h"
VCMI_LIB_NAMESPACE_BEGIN
@@ -88,7 +89,10 @@ void FlaggableMapObject::giveBonusTo(const PlayerColor & player, bool onInit) co
// Proper fix would be to make FlaggableMapObject into bonus system node
// Unfortunately this will cause saves breakage
if(onInit)
gb.applyGs(&cb->gameState());
{
GameStatePackVisitor visitor(cb->gameState());
gb.visit(visitor);
}
else
cb->sendAndApply(gb);
}

View File

@@ -46,7 +46,7 @@ public:
virtual void visitSetMana(SetMana & pack) {}
virtual void visitSetMovePoints(SetMovePoints & pack) {}
virtual void visitFoWChange(FoWChange & pack) {}
virtual void visitSetAvailableHeroes(SetAvailableHero & pack) {}
virtual void visitSetAvailableHero(SetAvailableHero & pack) {}
virtual void visitGiveBonus(GiveBonus & pack) {}
virtual void visitChangeObjPos(ChangeObjPos & pack) {}
virtual void visitPlayerEndsTurn(PlayerEndsTurn & pack) {};
@@ -78,7 +78,7 @@ public:
virtual void visitRebalanceStacks(RebalanceStacks & pack) {}
virtual void visitBulkRebalanceStacks(BulkRebalanceStacks & pack) {}
virtual void visitPutArtifact(PutArtifact & pack) {}
virtual void visitEraseArtifact(BulkEraseArtifacts & pack) {}
virtual void visitBulkEraseArtifacts(BulkEraseArtifacts & pack) {}
virtual void visitBulkMoveArtifacts(BulkMoveArtifacts & pack) {}
virtual void visitAssembledArtifact(AssembledArtifact & pack) {}
virtual void visitDisassembledArtifact(DisassembledArtifact & pack) {}
@@ -123,7 +123,7 @@ public:
virtual void visitBulkMoveArmy(BulkMoveArmy & pack) {}
virtual void visitBulkSplitStack(BulkSplitStack & pack) {}
virtual void visitBulkMergeStacks(BulkMergeStacks & pack) {}
virtual void visitBulkSmartSplitStack(BulkSplitAndRebalanceStack & pack) {}
virtual void visitBulkSplitAndRebalanceStack(BulkSplitAndRebalanceStack & pack) {}
virtual void visitDisbandCreature(DisbandCreature & pack) {}
virtual void visitBuildStructure(BuildStructure & pack) {}
virtual void visitVisitTownBuilding(VisitTownBuilding & pack) {}
@@ -178,6 +178,9 @@ public:
virtual void visitLobbyPvPAction(LobbyPvPAction & pack) {}
virtual void visitLobbyDelete(LobbyDelete & pack) {}
virtual void visitSaveLocalState(SaveLocalState & pack) {}
virtual void visitBattleCancelled(BattleCancelled & pack) {}
virtual void visitBattleResultAccepted(BattleResultAccepted & pack) {}
virtual void visitBattleStackMoved(BattleLogMessage & pack) {}
};
VCMI_LIB_NAMESPACE_END

View File

@@ -33,21 +33,15 @@ struct DLL_LINKAGE CPack : public Serializeable
void visit(ICPackVisitor & cpackVisitor);
protected:
/// <summary>
/// For basic types of netpacks hierarchy like CPackForClient. Called first.
/// </summary>
virtual void visitBasic(ICPackVisitor & cpackVisitor);
/// <summary>
/// For leaf types of netpacks hierarchy. Called after visitBasic.
/// </summary>
virtual void visitTyped(ICPackVisitor & cpackVisitor);
};
struct DLL_LINKAGE CPackForClient : public CPack
{
virtual void applyGs(CGameState * gs) = 0;
protected:
void visitBasic(ICPackVisitor & cpackVisitor) override;
};
@@ -57,6 +51,13 @@ struct DLL_LINKAGE Query : public CPackForClient
QueryID queryID; // equals to -1 if it is not an actual query (and should not be answered)
};
struct PackForClientBattle : public CPackForClient
{
BattleID battleID;
void visitTyped(ICPackVisitor & visitor) override;
};
struct DLL_LINKAGE CPackForServer : public CPack
{
mutable PlayerColor player = PlayerColor::NEUTRAL;

File diff suppressed because it is too large Load Diff

View File

@@ -57,7 +57,6 @@ struct DLL_LINKAGE PackageApplied : public CPackForClient
{
}
void visitTyped(ICPackVisitor & visitor) override;
void applyGs(CGameState *gs) override {}
ui8 result = 0; //0 - something went wrong, request hasn't been realized; 1 - OK
ui32 packType = 0; //type id of applied package
@@ -82,7 +81,6 @@ struct DLL_LINKAGE SystemMessage : public CPackForClient
SystemMessage() = default;
void visitTyped(ICPackVisitor & visitor) override;
void applyGs(CGameState *gs) override {}
MetaString text;
@@ -102,7 +100,6 @@ struct DLL_LINKAGE PlayerBlocked : public CPackForClient
PlayerColor player;
void visitTyped(ICPackVisitor & visitor) override;
void applyGs(CGameState *gs) override {}
template <typename Handler> void serialize(Handler & h)
{
@@ -114,8 +111,6 @@ struct DLL_LINKAGE PlayerBlocked : public CPackForClient
struct DLL_LINKAGE PlayerCheated : public CPackForClient
{
void applyGs(CGameState * gs) override;
PlayerColor player;
bool losingCheatCode = false;
bool winningCheatCode = false;
@@ -132,8 +127,6 @@ struct DLL_LINKAGE PlayerCheated : public CPackForClient
struct DLL_LINKAGE TurnTimeUpdate : public CPackForClient
{
void applyGs(CGameState * gs) override;
PlayerColor player;
TurnTimerInfo turnTimer;
@@ -146,8 +139,6 @@ struct DLL_LINKAGE TurnTimeUpdate : public CPackForClient
struct DLL_LINKAGE PlayerStartsTurn : public Query
{
void applyGs(CGameState * gs) override;
PlayerColor player;
void visitTyped(ICPackVisitor & visitor) override;
@@ -161,8 +152,6 @@ struct DLL_LINKAGE PlayerStartsTurn : public Query
struct DLL_LINKAGE DaysWithoutTown : public CPackForClient
{
void applyGs(CGameState * gs) override;
PlayerColor player;
std::optional<int32_t> daysWithoutCastle;
@@ -179,8 +168,6 @@ struct DLL_LINKAGE EntitiesChanged : public CPackForClient
{
std::vector<EntityChanges> changes;
void applyGs(CGameState * gs) override;
void visitTyped(ICPackVisitor & visitor) override;
template <typename Handler> void serialize(Handler & h)
@@ -191,8 +178,6 @@ struct DLL_LINKAGE EntitiesChanged : public CPackForClient
struct DLL_LINKAGE SetResources : public CPackForClient
{
void applyGs(CGameState * gs) override;
void visitTyped(ICPackVisitor & visitor) override;
bool abs = true; //false - changes by value; 1 - sets to value
@@ -209,8 +194,6 @@ struct DLL_LINKAGE SetResources : public CPackForClient
struct DLL_LINKAGE SetPrimSkill : public CPackForClient
{
void applyGs(CGameState * gs) override;
void visitTyped(ICPackVisitor & visitor) override;
ui8 abs = 0; //0 - changes by value; 1 - sets to value
@@ -229,8 +212,6 @@ struct DLL_LINKAGE SetPrimSkill : public CPackForClient
struct DLL_LINKAGE SetSecSkill : public CPackForClient
{
void applyGs(CGameState * gs) override;
void visitTyped(ICPackVisitor & visitor) override;
ui8 abs = 0; //0 - changes by value; 1 - sets to value
@@ -249,8 +230,6 @@ struct DLL_LINKAGE SetSecSkill : public CPackForClient
struct DLL_LINKAGE HeroVisitCastle : public CPackForClient
{
void applyGs(CGameState * gs) override;
void visitTyped(ICPackVisitor & visitor) override;
ui8 flags = 0; //1 - start
@@ -272,8 +251,6 @@ struct DLL_LINKAGE HeroVisitCastle : public CPackForClient
struct DLL_LINKAGE ChangeSpells : public CPackForClient
{
void applyGs(CGameState * gs) override;
void visitTyped(ICPackVisitor & visitor) override;
ui8 learn = 1; //1 - gives spell, 0 - takes
@@ -290,8 +267,6 @@ struct DLL_LINKAGE ChangeSpells : public CPackForClient
struct DLL_LINKAGE SetResearchedSpells : public CPackForClient
{
void applyGs(CGameState * gs) override;
void visitTyped(ICPackVisitor & visitor) override;
ui8 level = 0;
@@ -310,8 +285,6 @@ struct DLL_LINKAGE SetResearchedSpells : public CPackForClient
struct DLL_LINKAGE SetMana : public CPackForClient
{
void applyGs(CGameState * gs) override;
void visitTyped(ICPackVisitor & visitor) override;
SetMana() = default;
@@ -335,8 +308,6 @@ struct DLL_LINKAGE SetMana : public CPackForClient
struct DLL_LINKAGE SetMovePoints : public CPackForClient
{
void applyGs(CGameState * gs) override;
SetMovePoints() = default;
SetMovePoints(ObjectInstanceID hid, si32 val, bool absolute)
: hid(hid)
@@ -360,8 +331,6 @@ struct DLL_LINKAGE SetMovePoints : public CPackForClient
struct DLL_LINKAGE FoWChange : public CPackForClient
{
void applyGs(CGameState * gs) override;
std::unordered_set<int3> tiles;
PlayerColor player;
ETileVisibility mode;
@@ -384,7 +353,6 @@ struct DLL_LINKAGE SetAvailableHero : public CPackForClient
{
army.clearSlots();
}
void applyGs(CGameState * gs) override;
TavernHeroSlot slotID;
TavernSlotRole roleID;
@@ -429,8 +397,6 @@ struct DLL_LINKAGE GiveBonus : public CPackForClient
{
}
void applyGs(CGameState * gs) override;
ETarget who = ETarget::OBJECT;
VariantType id;
Bonus bonus;
@@ -448,8 +414,6 @@ struct DLL_LINKAGE GiveBonus : public CPackForClient
struct DLL_LINKAGE ChangeObjPos : public CPackForClient
{
void applyGs(CGameState * gs) override;
/// Object to move
ObjectInstanceID objid;
/// New position of visitable tile of an object
@@ -469,8 +433,6 @@ struct DLL_LINKAGE ChangeObjPos : public CPackForClient
struct DLL_LINKAGE PlayerEndsTurn : public CPackForClient
{
void applyGs(CGameState * gs) override;
PlayerColor player;
void visitTyped(ICPackVisitor & visitor) override;
@@ -483,8 +445,6 @@ struct DLL_LINKAGE PlayerEndsTurn : public CPackForClient
struct DLL_LINKAGE PlayerEndsGame : public CPackForClient
{
void applyGs(CGameState * gs) override;
PlayerColor player;
EVictoryLossCheckResult victoryLossCheckResult;
StatisticDataSet statistic;
@@ -501,8 +461,6 @@ struct DLL_LINKAGE PlayerEndsGame : public CPackForClient
struct DLL_LINKAGE PlayerReinitInterface : public CPackForClient
{
void applyGs(CGameState * gs) override;
std::vector<PlayerColor> players;
ui8 playerConnectionId; //PLAYER_AI for AI player
@@ -522,8 +480,6 @@ struct DLL_LINKAGE RemoveBonus : public CPackForClient
{
}
void applyGs(CGameState * gs) override;
GiveBonus::ETarget who; //who receives bonus
VariantIdentifier<HeroTypeID, PlayerColor, BattleID, ObjectInstanceID> whoID;
@@ -549,8 +505,6 @@ struct DLL_LINKAGE SetCommanderProperty : public CPackForClient
{
enum ECommanderProperty { ALIVE, BONUS, SECONDARY_SKILL, EXPERIENCE, SPECIAL_SKILL };
void applyGs(CGameState * gs) override;
ObjectInstanceID heroid;
ECommanderProperty which = ALIVE;
@@ -572,8 +526,6 @@ struct DLL_LINKAGE SetCommanderProperty : public CPackForClient
struct DLL_LINKAGE AddQuest : public CPackForClient
{
void applyGs(CGameState * gs) override;
PlayerColor player;
QuestInfo quest;
@@ -590,7 +542,6 @@ struct DLL_LINKAGE UpdateArtHandlerLists : public CPackForClient
{
std::map<ArtifactID, int> allocatedArtifacts;
void applyGs(CGameState * gs) override;
void visitTyped(ICPackVisitor & visitor) override;
template <typename Handler> void serialize(Handler & h)
@@ -604,7 +555,6 @@ struct DLL_LINKAGE ChangeFormation : public CPackForClient
ObjectInstanceID hid;
EArmyFormation formation{};
void applyGs(CGameState * gs) override;
void visitTyped(ICPackVisitor & visitor) override;
template <typename Handler> void serialize(Handler & h)
@@ -623,7 +573,6 @@ struct DLL_LINKAGE RemoveObject : public CPackForClient
{
}
void applyGs(CGameState * gs) override;
void visitTyped(ICPackVisitor & visitor) override;
/// ID of removed object
@@ -641,8 +590,6 @@ struct DLL_LINKAGE RemoveObject : public CPackForClient
struct DLL_LINKAGE TryMoveHero : public CPackForClient
{
void applyGs(CGameState * gs) override;
enum EResult
{
FAILED,
@@ -689,8 +636,6 @@ struct DLL_LINKAGE TryMoveHero : public CPackForClient
struct DLL_LINKAGE NewStructures : public CPackForClient
{
void applyGs(CGameState * gs) override;
ObjectInstanceID tid;
std::set<BuildingID> bid;
si16 built = 0;
@@ -707,8 +652,6 @@ struct DLL_LINKAGE NewStructures : public CPackForClient
struct DLL_LINKAGE RazeStructures : public CPackForClient
{
void applyGs(CGameState * gs) override;
ObjectInstanceID tid;
std::set<BuildingID> bid;
si16 destroyed = 0;
@@ -725,8 +668,6 @@ struct DLL_LINKAGE RazeStructures : public CPackForClient
struct DLL_LINKAGE SetAvailableCreatures : public CPackForClient
{
void applyGs(CGameState * gs) override;
ObjectInstanceID tid;
std::vector<std::pair<ui32, std::vector<CreatureID> > > creatures;
@@ -741,8 +682,6 @@ struct DLL_LINKAGE SetAvailableCreatures : public CPackForClient
struct DLL_LINKAGE SetHeroesInTown : public CPackForClient
{
void applyGs(CGameState * gs) override;
ObjectInstanceID tid; //id of town
ObjectInstanceID visiting; //id of visiting hero
ObjectInstanceID garrison; //id of hero in garrison
@@ -759,8 +698,6 @@ struct DLL_LINKAGE SetHeroesInTown : public CPackForClient
struct DLL_LINKAGE HeroRecruited : public CPackForClient
{
void applyGs(CGameState * gs) override;
HeroTypeID hid; //subID of hero
ObjectInstanceID tid;
ObjectInstanceID boatId;
@@ -781,8 +718,6 @@ struct DLL_LINKAGE HeroRecruited : public CPackForClient
struct DLL_LINKAGE GiveHero : public CPackForClient
{
void applyGs(CGameState * gs) override;
ObjectInstanceID id; //object id
ObjectInstanceID boatId;
PlayerColor player;
@@ -804,7 +739,6 @@ struct DLL_LINKAGE OpenWindow : public Query
ObjectInstanceID visitor;
void visitTyped(ICPackVisitor & visitor) override;
void applyGs(CGameState *gs) override {}
template <typename Handler> void serialize(Handler & h)
{
@@ -817,8 +751,6 @@ struct DLL_LINKAGE OpenWindow : public Query
struct DLL_LINKAGE NewObject : public CPackForClient
{
void applyGs(CGameState * gs) override;
/// Object ID to create
std::shared_ptr<CGObjectInstance> newObject;
/// Which player initiated creation of this object
@@ -835,8 +767,6 @@ struct DLL_LINKAGE NewObject : public CPackForClient
struct DLL_LINKAGE SetAvailableArtifacts : public CPackForClient
{
void applyGs(CGameState * gs) override;
//two variants: id < 0: set artifact pool for Artifact Merchants in towns; id >= 0: set pool for adv. map Black Market (id is the id of Black Market instance then)
ObjectInstanceID id;
std::vector<ArtifactID> arts;
@@ -861,8 +791,6 @@ struct DLL_LINKAGE ChangeStackCount : CGarrisonOperationPack
TQuantity count;
bool absoluteValue; //if not -> count will be added (or subtracted if negative)
void applyGs(CGameState * gs) override;
void visitTyped(ICPackVisitor & visitor) override;
template <typename Handler> void serialize(Handler & h)
@@ -880,8 +808,6 @@ struct DLL_LINKAGE SetStackType : CGarrisonOperationPack
SlotID slot;
CreatureID type;
void applyGs(CGameState * gs) override;
void visitTyped(ICPackVisitor & visitor) override;
template <typename Handler> void serialize(Handler & h)
@@ -897,7 +823,6 @@ struct DLL_LINKAGE EraseStack : CGarrisonOperationPack
ObjectInstanceID army;
SlotID slot;
void applyGs(CGameState * gs) override;
void visitTyped(ICPackVisitor & visitor) override;
template <typename Handler> void serialize(Handler & h)
@@ -914,7 +839,6 @@ struct DLL_LINKAGE SwapStacks : CGarrisonOperationPack
SlotID srcSlot;
SlotID dstSlot;
void applyGs(CGameState * gs) override;
void visitTyped(ICPackVisitor & visitor) override;
template <typename Handler> void serialize(Handler & h)
@@ -933,7 +857,6 @@ struct DLL_LINKAGE InsertNewStack : CGarrisonOperationPack
CreatureID type;
TQuantity count = 0;
void applyGs(CGameState * gs) override;
void visitTyped(ICPackVisitor & visitor) override;
template <typename Handler> void serialize(Handler & h)
@@ -955,7 +878,6 @@ struct DLL_LINKAGE RebalanceStacks : CGarrisonOperationPack
TQuantity count;
void applyGs(CGameState * gs) override;
void visitTyped(ICPackVisitor & visitor) override;
template <typename Handler> void serialize(Handler & h)
@@ -972,7 +894,6 @@ struct DLL_LINKAGE BulkRebalanceStacks : CGarrisonOperationPack
{
std::vector<RebalanceStacks> moves;
void applyGs(CGameState * gs) override;
void visitTyped(ICPackVisitor & visitor) override;
template <typename Handler>
@@ -998,7 +919,6 @@ struct DLL_LINKAGE PutArtifact : CArtifactOperationPack
bool askAssemble;
ArtifactInstanceID id;
void applyGs(CGameState * gs) override;
void visitTyped(ICPackVisitor & visitor) override;
template <typename Handler> void serialize(Handler & h)
@@ -1016,7 +936,6 @@ struct DLL_LINKAGE NewArtifact : public CArtifactOperationPack
SpellID spellId;
ArtifactPosition pos;
void applyGs(CGameState * gs) override;
void visitTyped(ICPackVisitor & visitor) override;
template <typename Handler> void serialize(Handler & h)
@@ -1034,7 +953,6 @@ struct DLL_LINKAGE BulkEraseArtifacts : CArtifactOperationPack
std::vector<ArtifactPosition> posPack;
std::optional<SlotID> creature;
void applyGs(CGameState * gs) override;
void visitTyped(ICPackVisitor & visitor) override;
template <typename Handler> void serialize(Handler & h)
@@ -1070,8 +988,6 @@ struct DLL_LINKAGE BulkMoveArtifacts : CArtifactOperationPack
{
}
void applyGs(CGameState * gs) override;
std::vector<MoveArtifactInfo> artsPack0;
std::vector<MoveArtifactInfo> artsPack1;
@@ -1094,8 +1010,6 @@ struct DLL_LINKAGE AssembledArtifact : CArtifactOperationPack
ArtifactLocation al;
ArtifactID artId;
void applyGs(CGameState * gs) override;
void visitTyped(ICPackVisitor & visitor) override;
template <typename Handler> void serialize(Handler & h)
@@ -1109,8 +1023,6 @@ struct DLL_LINKAGE DisassembledArtifact : CArtifactOperationPack
{
ArtifactLocation al;
void applyGs(CGameState * gs) override;
void visitTyped(ICPackVisitor & visitor) override;
template <typename Handler> void serialize(Handler & h)
@@ -1127,8 +1039,6 @@ struct DLL_LINKAGE HeroVisit : public CPackForClient
bool starting; //false -> ending
void applyGs(CGameState * gs) override;
void visitTyped(ICPackVisitor & visitor) override;
template <typename Handler> void serialize(Handler & h)
@@ -1149,7 +1059,6 @@ struct DLL_LINKAGE InfoWindow : public CPackForClient //103 - displays simple i
ui16 soundID = 0;
void visitTyped(ICPackVisitor & visitor) override;
void applyGs(CGameState * gs) override {}
template <typename Handler> void serialize(Handler & h)
{
@@ -1164,8 +1073,6 @@ struct DLL_LINKAGE InfoWindow : public CPackForClient //103 - displays simple i
struct DLL_LINKAGE NewTurn : public CPackForClient
{
void applyGs(CGameState * gs) override;
void visitTyped(ICPackVisitor & visitor) override;
ui32 day = 0;
@@ -1197,7 +1104,6 @@ struct DLL_LINKAGE NewTurn : public CPackForClient
struct DLL_LINKAGE SetObjectProperty : public CPackForClient
{
void applyGs(CGameState * gs) override;
ObjectInstanceID id;
ObjProperty what{};
@@ -1228,8 +1134,6 @@ struct DLL_LINKAGE ChangeObjectVisitors : public CPackForClient
ObjectInstanceID object;
ObjectInstanceID hero; // note: hero owner will be also marked as "visited" this object
void applyGs(CGameState * gs) override;
void visitTyped(ICPackVisitor & visitor) override;
ChangeObjectVisitors() = default;
@@ -1255,7 +1159,6 @@ struct DLL_LINKAGE ChangeArtifactsCostume : public CPackForClient
uint32_t costumeIdx = 0;
const PlayerColor player = PlayerColor::NEUTRAL;
void applyGs(CGameState * gs) override;
void visitTyped(ICPackVisitor & visitor) override;
ChangeArtifactsCostume() = default;
@@ -1281,8 +1184,6 @@ struct DLL_LINKAGE HeroLevelUp : public Query
PrimarySkill primskill = PrimarySkill::ATTACK;
std::vector<SecondarySkill> skills;
void applyGs(CGameState * gs) override;
void visitTyped(ICPackVisitor & visitor) override;
template <typename Handler> void serialize(Handler & h)
@@ -1302,8 +1203,6 @@ struct DLL_LINKAGE CommanderLevelUp : public Query
std::vector<ui32> skills; //0-5 - secondary skills, val-100 - special skill
void applyGs(CGameState * gs) override;
void visitTyped(ICPackVisitor & visitor) override;
template <typename Handler> void serialize(Handler & h)
@@ -1349,7 +1248,6 @@ struct DLL_LINKAGE BlockingDialog : public Query
BlockingDialog() = default;
void visitTyped(ICPackVisitor & visitor) override;
void applyGs(CGameState * gs) override {}
template <typename Handler> void serialize(Handler & h)
{
@@ -1369,7 +1267,6 @@ struct DLL_LINKAGE GarrisonDialog : public Query
bool removableUnits = false;
void visitTyped(ICPackVisitor & visitor) override;
void applyGs(CGameState * gs) override {}
template <typename Handler> void serialize(Handler & h)
{
@@ -1388,7 +1285,6 @@ struct DLL_LINKAGE ExchangeDialog : public Query
ObjectInstanceID hero2;
void visitTyped(ICPackVisitor & visitor) override;
void applyGs(CGameState * gs) override {}
template <typename Handler> void serialize(Handler & h)
{
@@ -1414,7 +1310,6 @@ struct DLL_LINKAGE TeleportDialog : public Query
bool impassable = false;
void visitTyped(ICPackVisitor & visitor) override;
void applyGs(CGameState * gs) override {}
template <typename Handler> void serialize(Handler & h)
{
@@ -1435,7 +1330,6 @@ struct DLL_LINKAGE MapObjectSelectDialog : public Query
std::vector<ObjectInstanceID> objects;
void visitTyped(ICPackVisitor & visitor) override;
void applyGs(CGameState * gs) override {}
template <typename Handler> void serialize(Handler & h)
{
@@ -1460,7 +1354,6 @@ struct DLL_LINKAGE AdvmapSpellCast : public CPackForClient
protected:
void visitTyped(ICPackVisitor & visitor) override;
void applyGs(CGameState * gs) override {}
};
struct DLL_LINKAGE ShowWorldViewEx : public CPackForClient
@@ -1470,8 +1363,6 @@ struct DLL_LINKAGE ShowWorldViewEx : public CPackForClient
std::vector<ObjectPosInfo> objectPositions;
void applyGs(CGameState * gs) override {}
template <typename Handler> void serialize(Handler & h)
{
h & player;
@@ -1492,7 +1383,6 @@ struct DLL_LINKAGE PlayerMessageClient : public CPackForClient
{
}
void visitTyped(ICPackVisitor & visitor) override;
void applyGs(CGameState * gs) override {}
PlayerColor player;
std::string text;
@@ -1511,7 +1401,6 @@ struct DLL_LINKAGE CenterView : public CPackForClient
ui32 focusTime = 0; //ms
void visitTyped(ICPackVisitor & visitor) override;
void applyGs(CGameState * gs) override {}
template <typename Handler> void serialize(Handler & h)
{

View File

@@ -29,8 +29,6 @@ class BattleInfo;
struct DLL_LINKAGE BattleStart : public CPackForClient
{
void applyGs(CGameState * gs) override;
BattleID battleID = BattleID::NONE;
std::unique_ptr<BattleInfo> info;
@@ -46,8 +44,6 @@ struct DLL_LINKAGE BattleStart : public CPackForClient
struct DLL_LINKAGE BattleNextRound : public CPackForClient
{
void applyGs(CGameState * gs) override;
BattleID battleID = BattleID::NONE;
void visitTyped(ICPackVisitor & visitor) override;
@@ -61,8 +57,6 @@ struct DLL_LINKAGE BattleNextRound : public CPackForClient
struct DLL_LINKAGE BattleSetActiveStack : public CPackForClient
{
void applyGs(CGameState * gs) override;
BattleID battleID = BattleID::NONE;
uint32_t stack = 0;
BattleUnitTurnReason reason;
@@ -80,8 +74,6 @@ struct DLL_LINKAGE BattleSetActiveStack : public CPackForClient
struct DLL_LINKAGE BattleCancelled: public CPackForClient
{
void applyGs(CGameState * gs) override;
BattleID battleID = BattleID::NONE;
template <typename Handler> void serialize(Handler & h)
@@ -93,8 +85,6 @@ struct DLL_LINKAGE BattleCancelled: public CPackForClient
struct DLL_LINKAGE BattleResultAccepted : public CPackForClient
{
void applyGs(CGameState * gs) override;
struct HeroBattleResults
{
ObjectInstanceID heroID;
@@ -126,8 +116,6 @@ struct DLL_LINKAGE BattleResultAccepted : public CPackForClient
struct DLL_LINKAGE BattleResult : public Query
{
void applyFirstCl(CClient * cl);
BattleID battleID = BattleID::NONE;
EBattleResult result = EBattleResult::NORMAL;
BattleSide winner = BattleSide::NONE; //0 - attacker, 1 - defender, [2 - draw (should be possible?)]
@@ -135,7 +123,6 @@ struct DLL_LINKAGE BattleResult : public Query
BattleSideArray<TExpType> exp{0,0}; //exp for attacker and defender
void visitTyped(ICPackVisitor & visitor) override;
void applyGs(CGameState *gs) override {}
template <typename Handler> void serialize(Handler & h)
{
@@ -154,9 +141,6 @@ struct DLL_LINKAGE BattleLogMessage : public CPackForClient
BattleID battleID = BattleID::NONE;
std::vector<MetaString> lines;
void applyGs(CGameState * gs) override;
void applyBattle(IBattleState * battleState);
void visitTyped(ICPackVisitor & visitor) override;
template <typename Handler> void serialize(Handler & h)
@@ -175,9 +159,6 @@ struct DLL_LINKAGE BattleStackMoved : public CPackForClient
int distance = 0;
bool teleporting = false;
void applyGs(CGameState * gs) override;
void applyBattle(IBattleState * battleState);
void visitTyped(ICPackVisitor & visitor) override;
template <typename Handler> void serialize(Handler & h)
@@ -193,9 +174,6 @@ struct DLL_LINKAGE BattleStackMoved : public CPackForClient
struct DLL_LINKAGE BattleUnitsChanged : public CPackForClient
{
void applyGs(CGameState * gs) override;
void applyBattle(IBattleState * battleState);
BattleID battleID = BattleID::NONE;
std::vector<UnitChanges> changedStacks;
@@ -211,10 +189,6 @@ struct DLL_LINKAGE BattleUnitsChanged : public CPackForClient
struct BattleStackAttacked
{
DLL_LINKAGE void applyGs(CGameState * gs);
DLL_LINKAGE void applyBattle(IBattleState * battleState);
BattleID battleID = BattleID::NONE;
ui32 stackAttacked = 0, attackerID = 0;
ui32 killedAmount = 0;
int64_t damageAmount = 0;
@@ -251,7 +225,6 @@ struct BattleStackAttacked
template <typename Handler> void serialize(Handler & h)
{
h & battleID;
h & stackAttacked;
h & attackerID;
h & newState;
@@ -259,7 +232,6 @@ struct BattleStackAttacked
h & killedAmount;
h & damageAmount;
h & spellID;
assert(battleID != BattleID::NONE);
}
bool operator<(const BattleStackAttacked & b) const
{
@@ -269,7 +241,6 @@ struct BattleStackAttacked
struct DLL_LINKAGE BattleAttack : public CPackForClient
{
void applyGs(CGameState * gs) override;
BattleUnitsChanged attackerChanges;
BattleID battleID = BattleID::NONE;
@@ -336,8 +307,6 @@ struct DLL_LINKAGE StartAction : public CPackForClient
: ba(std::move(act))
{
}
void applyFirstCl(CClient * cl);
void applyGs(CGameState * gs) override;
BattleID battleID = BattleID::NONE;
BattleAction ba;
@@ -355,7 +324,6 @@ struct DLL_LINKAGE StartAction : public CPackForClient
struct DLL_LINKAGE EndAction : public CPackForClient
{
void visitTyped(ICPackVisitor & visitor) override;
void applyGs(CGameState *gs) override {}
BattleID battleID = BattleID::NONE;
@@ -367,8 +335,6 @@ struct DLL_LINKAGE EndAction : public CPackForClient
struct DLL_LINKAGE BattleSpellCast : public CPackForClient
{
void applyGs(CGameState * gs) override;
BattleID battleID = BattleID::NONE;
bool activeCast = true;
BattleSide side = BattleSide::NONE; //which hero did cast spell
@@ -402,9 +368,6 @@ struct DLL_LINKAGE BattleSpellCast : public CPackForClient
struct DLL_LINKAGE StacksInjured : public CPackForClient
{
void applyGs(CGameState * gs) override;
void applyBattle(IBattleState * battleState);
BattleID battleID = BattleID::NONE;
std::vector<BattleStackAttacked> stacks;
@@ -427,7 +390,6 @@ struct DLL_LINKAGE BattleResultsApplied : public CPackForClient
std::vector<BulkMoveArtifacts> artifacts;
CStackBasicDescriptor raisedStack;
void visitTyped(ICPackVisitor & visitor) override;
void applyGs(CGameState *gs) override;
template <typename Handler> void serialize(Handler & h)
{
@@ -443,9 +405,6 @@ struct DLL_LINKAGE BattleResultsApplied : public CPackForClient
struct DLL_LINKAGE BattleObstaclesChanged : public CPackForClient
{
void applyGs(CGameState * gs) override;
void applyBattle(IBattleState * battleState);
BattleID battleID = BattleID::NONE;
std::vector<ObstacleChanges> changes;
@@ -475,12 +434,6 @@ struct DLL_LINKAGE CatapultAttack : public CPackForClient
}
};
CatapultAttack();
~CatapultAttack() override;
void applyGs(CGameState * gs) override;
void applyBattle(IBattleState * battleState);
BattleID battleID = BattleID::NONE;
std::vector< AttackInfo > attackedParts;
int attacker = -1; //if -1, then a spell caused this
@@ -500,8 +453,6 @@ struct DLL_LINKAGE BattleSetStackProperty : public CPackForClient
{
enum BattleStackProperty { CASTS, ENCHANTER_COUNTER, UNBIND, CLONED, HAS_CLONE };
void applyGs(CGameState * gs) override;
BattleID battleID = BattleID::NONE;
int stackID = 0;
BattleStackProperty which = CASTS;
@@ -525,8 +476,6 @@ protected:
///activated at the beginning of turn
struct DLL_LINKAGE BattleTriggerEffect : public CPackForClient
{
void applyGs(CGameState * gs) override; //effect
BattleID battleID = BattleID::NONE;
int stackID = 0;
int effect = 0; //use corresponding Bonus type
@@ -549,8 +498,6 @@ protected:
struct DLL_LINKAGE BattleUpdateGateState : public CPackForClient
{
void applyGs(CGameState * gs) override;
BattleID battleID = BattleID::NONE;
EGateState state = EGateState::NONE;
template <typename Handler> void serialize(Handler & h)

View File

@@ -730,8 +730,6 @@ struct DLL_LINKAGE SaveGame : public CPackForServer
}
std::string fname;
void applyGs(CGameState * gs) {};
void visitTyped(ICPackVisitor & visitor) override;
template <typename Handler> void serialize(Handler & h)
@@ -750,8 +748,6 @@ struct DLL_LINKAGE PlayerMessage : public CPackForServer
{
}
void applyGs(CGameState * gs) {};
void visitTyped(ICPackVisitor & visitor) override;
std::string text;

View File

@@ -17,7 +17,6 @@ VCMI_LIB_NAMESPACE_BEGIN
struct DLL_LINKAGE SetRewardableConfiguration : public CPackForClient
{
void applyGs(CGameState * gs) override;
void visitTyped(ICPackVisitor & visitor) override;
ObjectInstanceID objectID;

View File

@@ -19,9 +19,6 @@ class IBattleState;
struct DLL_LINKAGE SetStackEffect : public CPackForClient
{
void applyGs(CGameState * gs) override;
void applyBattle(IBattleState * battleState);
BattleID battleID = BattleID::NONE;
std::vector<std::pair<ui32, std::vector<Bonus>>> toAdd;
std::vector<std::pair<ui32, std::vector<Bonus>>> toUpdate;

View File

@@ -59,10 +59,10 @@ void registerTypes(Serializer &s)
static_assert(std::is_abstract_v<CGTeleport>, "If this type is no longer abstract consider registering it for serialization with ID 3");
static_assert(std::is_abstract_v<IQuestObject>, "If this type is no longer abstract consider registering it for serialization with ID 11");
static_assert(std::is_abstract_v<CArtifactSet>, "If this type is no longer abstract consider registering it for serialization with ID 29");
static_assert(std::is_abstract_v<CPackForClient>, "If this type is no longer abstract consider registering it for serialization with ID 83");
static_assert(std::is_abstract_v<Query>, "If this type is no longer abstract consider registering it for serialization with ID 153");
static_assert(std::is_abstract_v<CGarrisonOperationPack>, "If this type is no longer abstract consider registering it for serialization with ID 161");
static_assert(std::is_abstract_v<CArtifactOperationPack>, "If this type is no longer abstract consider registering it for serialization with ID 168");
// static_assert(std::is_abstract_v<CPackForClient>, "If this type is no longer abstract consider registering it for serialization with ID 83");
// static_assert(std::is_abstract_v<Query>, "If this type is no longer abstract consider registering it for serialization with ID 153");
// static_assert(std::is_abstract_v<CGarrisonOperationPack>, "If this type is no longer abstract consider registering it for serialization with ID 161");
// static_assert(std::is_abstract_v<CArtifactOperationPack>, "If this type is no longer abstract consider registering it for serialization with ID 168");
s.template registerType<CGObjectInstance>(2);
s.template registerType<CGMonolith>(4);

View File

@@ -53,7 +53,6 @@ void Damage::apply(ServerCallback * server, const Mechanics * m, const EffectTar
if(unit && unit->alive())
{
BattleStackAttacked bsa;
bsa.battleID = m->battle()->getBattle()->getBattleID();
bsa.damageAmount = damageForTarget(targetIndex, m, unit);
bsa.stackAttacked = unit->unitId();
bsa.attackerID = -1;

View File

@@ -123,7 +123,7 @@ void ApplyGhNetPackVisitor::visitBulkMergeStacks(BulkMergeStacks & pack)
result = gh.bulkMergeStacks(pack.src, pack.srcOwner);
}
void ApplyGhNetPackVisitor::visitBulkSmartSplitStack(BulkSplitAndRebalanceStack & pack)
void ApplyGhNetPackVisitor::visitBulkSplitAndRebalanceStack(BulkSplitAndRebalanceStack & pack)
{
gh.throwIfWrongPlayer(connection, &pack);
gh.throwIfPlayerNotActive(connection, &pack);

View File

@@ -41,7 +41,7 @@ public:
void visitBulkMoveArmy(BulkMoveArmy & pack) override;
void visitBulkSplitStack(BulkSplitStack & pack) override;
void visitBulkMergeStacks(BulkMergeStacks & pack) override;
void visitBulkSmartSplitStack(BulkSplitAndRebalanceStack & pack) override;
void visitBulkSplitAndRebalanceStack(BulkSplitAndRebalanceStack & pack) override;
void visitDisbandCreature(DisbandCreature & pack) override;
void visitBuildStructure(BuildStructure & pack) override;
void visitSpellResearch(SpellResearch & pack) override;

View File

@@ -1037,9 +1037,6 @@ void BattleActionProcessor::makeAttack(const CBattleInfoCallback & battle, const
if (healInfo.healedHealthPoints > 0)
bat.flags |= BattleAttack::LIFE_DRAIN;
for (BattleStackAttacked & bsa : bat.bsa)
bsa.battleID = battle.getBattle()->getBattleID();
gameHandler->sendAndApply(bat);
{
@@ -1097,7 +1094,6 @@ void BattleActionProcessor::makeAttack(const CBattleInfoCallback & battle, const
{
BattleStackAttacked bsa;
bsa.battleID = battle.getBattle()->getBattleID();
bsa.flags |= BattleStackAttacked::FIRE_SHIELD;
bsa.stackAttacked = attacker->unitId(); //invert
bsa.attackerID = defender->unitId();

View File

@@ -20,6 +20,7 @@
#endif
#include "../../lib/battle/CBattleInfoCallback.h"
#include "../../lib/gameState/GameStatePackVisitor.h"
namespace test
{
@@ -83,7 +84,8 @@ public:
template <typename T>
void accept(T & pack)
{
pack.applyBattle(this);
BattleStatePackVisitor visitor(*this);
pack.visit(visitor);
}
const IBattleInfo * getBattle() const override