mirror of
https://github.com/vcmi/vcmi.git
synced 2025-11-27 22:49:25 +02:00
* fixed crash on visiting Sirens
* fixed race condition on the new turn, #729 should be gone * fixed crashes in AI-only game mode
This commit is contained in:
@@ -552,7 +552,7 @@ void GarrisonDialog::applyCl(CClient *cl)
|
|||||||
if(!vstd::contains(cl->playerint,h->getOwner()))
|
if(!vstd::contains(cl->playerint,h->getOwner()))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
boost::function<void()> callback = boost::bind(&CCallback::selectionMade,LOCPLINT->cb,0,id);
|
boost::function<void()> callback = boost::bind(&CCallback::selectionMade,cl->callbacks[h->getOwner()].get(),0,id);
|
||||||
cl->playerint[h->getOwner()]->showGarrisonDialog(obj,h,removableUnits,callback);
|
cl->playerint[h->getOwner()]->showGarrisonDialog(obj,h,removableUnits,callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6291,7 +6291,7 @@ void CGSirens::onHeroVisit( const CGHeroInstance * h ) const
|
|||||||
xp = h->calculateXp(xp);
|
xp = h->calculateXp(xp);
|
||||||
iw.text.addTxt(11,132);
|
iw.text.addTxt(11,132);
|
||||||
iw.text.addReplacement(xp);
|
iw.text.addReplacement(xp);
|
||||||
cb->changePrimSkill(h->ID, 4, xp, false);
|
cb->changePrimSkill(h->id, 4, xp, false);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1244,7 +1244,7 @@ void CGameHandler::run(bool resume)
|
|||||||
{
|
{
|
||||||
YourTurn yt;
|
YourTurn yt;
|
||||||
yt.player = i->first;
|
yt.player = i->first;
|
||||||
sendAndApply(&yt);
|
applyAndSend(&yt);
|
||||||
}
|
}
|
||||||
|
|
||||||
//wait till turn is done
|
//wait till turn is done
|
||||||
@@ -1939,13 +1939,18 @@ void CGameHandler::sendToAllClients( CPackForClient * info )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CGameHandler::sendAndApply( CPackForClient * info )
|
void CGameHandler::sendAndApply(CPackForClient * info)
|
||||||
{
|
{
|
||||||
//TODO? mutex
|
|
||||||
sendToAllClients(info);
|
sendToAllClients(info);
|
||||||
gs->apply(info);
|
gs->apply(info);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CGameHandler::applyAndSend(CPackForClient * info)
|
||||||
|
{
|
||||||
|
gs->apply(info);
|
||||||
|
sendToAllClients(info);
|
||||||
|
}
|
||||||
|
|
||||||
void CGameHandler::sendAndApply(CGarrisonOperationPack * info)
|
void CGameHandler::sendAndApply(CGarrisonOperationPack * info)
|
||||||
{
|
{
|
||||||
sendAndApply((CPackForClient*)info);
|
sendAndApply((CPackForClient*)info);
|
||||||
@@ -5231,6 +5236,7 @@ void CGameHandler::spawnWanderingMonsters(int creatureID)
|
|||||||
tiles.erase(tile); //not use it again
|
tiles.erase(tile); //not use it again
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CasualtiesAfterBattle::CasualtiesAfterBattle(const CArmedInstance *army, BattleInfo *bat)
|
CasualtiesAfterBattle::CasualtiesAfterBattle(const CArmedInstance *army, BattleInfo *bat)
|
||||||
{
|
{
|
||||||
int color = army->tempOwner;
|
int color = army->tempOwner;
|
||||||
|
|||||||
@@ -242,8 +242,8 @@ public:
|
|||||||
void ask(Query * sel, ui8 player, const CFunctionList<void(ui32)> &callback);
|
void ask(Query * sel, ui8 player, const CFunctionList<void(ui32)> &callback);
|
||||||
void sendToAllClients(CPackForClient * info);
|
void sendToAllClients(CPackForClient * info);
|
||||||
void sendAndApply(CPackForClient * info);
|
void sendAndApply(CPackForClient * info);
|
||||||
|
void applyAndSend(CPackForClient * info);
|
||||||
void sendAndApply(CGarrisonOperationPack * info);
|
void sendAndApply(CGarrisonOperationPack * info);
|
||||||
//void sendAndApply(SetGarrisons * info);
|
|
||||||
void sendAndApply(SetResource * info);
|
void sendAndApply(SetResource * info);
|
||||||
void sendAndApply(SetResources * info);
|
void sendAndApply(SetResources * info);
|
||||||
void sendAndApply(NewStructures * info);
|
void sendAndApply(NewStructures * info);
|
||||||
|
|||||||
Reference in New Issue
Block a user