1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-06-17 00:07:41 +02:00

PlayerState::daysWithoutCastle: change in netpacks only. Fix issue 2462

Moving code from CGameHandler to NetPacksLib without changes.
This commit is contained in:
Arseniy Shestakov
2016-08-23 07:57:57 +03:00
parent 355f0a74ab
commit abad3cfb17
2 changed files with 27 additions and 22 deletions

View File

@ -1093,6 +1093,25 @@ DLL_LINKAGE void NewTurn::applyGs( CGameState *gs )
if(gs->getDate(Date::DAY_OF_WEEK) == 1)
gs->updateRumor();
//count days without town for all players, regardless of their turn order
for (auto &p : gs->players)
{
PlayerState & playerState = p.second;
if (playerState.status == EPlayerStatus::INGAME)
{
if (playerState.towns.empty())
{
if (playerState.daysWithoutCastle)
++(*playerState.daysWithoutCastle);
else playerState.daysWithoutCastle = 0;
}
else
{
playerState.daysWithoutCastle = boost::none;
}
}
}
}
DLL_LINKAGE void SetObjectProperty::applyGs( CGameState *gs )
@ -1113,7 +1132,14 @@ DLL_LINKAGE void SetObjectProperty::applyGs( CGameState *gs )
if(t->tempOwner < PlayerColor::PLAYER_LIMIT)
gs->getPlayer(t->tempOwner)->towns -= t;
if(val < PlayerColor::PLAYER_LIMIT_I)
gs->getPlayer(PlayerColor(val))->towns.push_back(t);
{
PlayerState * p = gs->getPlayer(PlayerColor(val));
p->towns.push_back(t);
//reset counter before NewTurn to avoid no town message if game loaded at turn when one already captured
if(p->daysWithoutCastle)
p->daysWithoutCastle = boost::none;
}
}
CBonusSystemNode *nodeToMove = cai->whatShouldBeAttached();