mirror of
https://github.com/vcmi/vcmi.git
synced 2025-06-19 00:17:56 +02:00
Fix game not awarding stack experience after combat
- Added missing `visitTyped` overloads. - Throw runtime error if `visitTyped` is called on raw CPack, to avoid such silent errors in future
This commit is contained in:
@ -36,6 +36,7 @@ void CPack::visitBasic(ICPackVisitor & visitor)
|
||||
|
||||
void CPack::visitTyped(ICPackVisitor & visitor)
|
||||
{
|
||||
throw std::runtime_error(std::string("CPack::visitTyped called for class ") + typeid(*this).name());
|
||||
}
|
||||
|
||||
void CPackForClient::visitBasic(ICPackVisitor & visitor)
|
||||
@ -812,4 +813,19 @@ void CatapultAttack::visitTyped(ICPackVisitor & visitor)
|
||||
visitor.visitCatapultAttack(*this);
|
||||
}
|
||||
|
||||
void BattleResultAccepted::visitTyped(ICPackVisitor & visitor)
|
||||
{
|
||||
visitor.visitBattleResultAccepted(*this);
|
||||
}
|
||||
|
||||
void BattleCancelled::visitTyped(ICPackVisitor & visitor)
|
||||
{
|
||||
visitor.visitBattleCancelled(*this);
|
||||
}
|
||||
|
||||
void TurnTimeUpdate::visitTyped(ICPackVisitor & visitor)
|
||||
{
|
||||
visitor.visitTurnTimeUpdate(*this);
|
||||
}
|
||||
|
||||
VCMI_LIB_NAMESPACE_END
|
||||
|
@ -130,6 +130,8 @@ struct DLL_LINKAGE TurnTimeUpdate : public CPackForClient
|
||||
PlayerColor player;
|
||||
TurnTimerInfo turnTimer;
|
||||
|
||||
void visitTyped(ICPackVisitor & visitor) override;
|
||||
|
||||
template <typename Handler> void serialize(Handler & h)
|
||||
{
|
||||
h & player;
|
||||
|
@ -76,6 +76,8 @@ struct DLL_LINKAGE BattleCancelled: public CPackForClient
|
||||
{
|
||||
BattleID battleID = BattleID::NONE;
|
||||
|
||||
void visitTyped(ICPackVisitor & visitor) override;
|
||||
|
||||
template <typename Handler> void serialize(Handler & h)
|
||||
{
|
||||
h & battleID;
|
||||
@ -104,6 +106,8 @@ struct DLL_LINKAGE BattleResultAccepted : public CPackForClient
|
||||
BattleSide winnerSide;
|
||||
std::vector<BulkMoveArtifacts> artifacts;
|
||||
|
||||
void visitTyped(ICPackVisitor & visitor) override;
|
||||
|
||||
template <typename Handler> void serialize(Handler & h)
|
||||
{
|
||||
h & battleID;
|
||||
|
Reference in New Issue
Block a user