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)
|
void CPack::visitTyped(ICPackVisitor & visitor)
|
||||||
{
|
{
|
||||||
|
throw std::runtime_error(std::string("CPack::visitTyped called for class ") + typeid(*this).name());
|
||||||
}
|
}
|
||||||
|
|
||||||
void CPackForClient::visitBasic(ICPackVisitor & visitor)
|
void CPackForClient::visitBasic(ICPackVisitor & visitor)
|
||||||
@ -812,4 +813,19 @@ void CatapultAttack::visitTyped(ICPackVisitor & visitor)
|
|||||||
visitor.visitCatapultAttack(*this);
|
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
|
VCMI_LIB_NAMESPACE_END
|
||||||
|
@ -130,6 +130,8 @@ struct DLL_LINKAGE TurnTimeUpdate : public CPackForClient
|
|||||||
PlayerColor player;
|
PlayerColor player;
|
||||||
TurnTimerInfo turnTimer;
|
TurnTimerInfo turnTimer;
|
||||||
|
|
||||||
|
void visitTyped(ICPackVisitor & visitor) override;
|
||||||
|
|
||||||
template <typename Handler> void serialize(Handler & h)
|
template <typename Handler> void serialize(Handler & h)
|
||||||
{
|
{
|
||||||
h & player;
|
h & player;
|
||||||
|
@ -76,6 +76,8 @@ struct DLL_LINKAGE BattleCancelled: public CPackForClient
|
|||||||
{
|
{
|
||||||
BattleID battleID = BattleID::NONE;
|
BattleID battleID = BattleID::NONE;
|
||||||
|
|
||||||
|
void visitTyped(ICPackVisitor & visitor) override;
|
||||||
|
|
||||||
template <typename Handler> void serialize(Handler & h)
|
template <typename Handler> void serialize(Handler & h)
|
||||||
{
|
{
|
||||||
h & battleID;
|
h & battleID;
|
||||||
@ -104,6 +106,8 @@ struct DLL_LINKAGE BattleResultAccepted : public CPackForClient
|
|||||||
BattleSide winnerSide;
|
BattleSide winnerSide;
|
||||||
std::vector<BulkMoveArtifacts> artifacts;
|
std::vector<BulkMoveArtifacts> artifacts;
|
||||||
|
|
||||||
|
void visitTyped(ICPackVisitor & visitor) override;
|
||||||
|
|
||||||
template <typename Handler> void serialize(Handler & h)
|
template <typename Handler> void serialize(Handler & h)
|
||||||
{
|
{
|
||||||
h & battleID;
|
h & battleID;
|
||||||
|
Reference in New Issue
Block a user