mirror of
https://github.com/vcmi/vcmi.git
synced 2025-03-23 21:29:13 +02:00
Fix: Captured town should not be duplicated on the UI
This commit is contained in:
parent
e4c2f0c822
commit
7cfd1fe0ca
@ -1505,6 +1505,7 @@ void CPlayerInterface::objectPropertyChanged(const SetObjectProperty * sop)
|
||||
towns -= obj;
|
||||
|
||||
adventureInt->townList.update();
|
||||
adventureInt->minimap.update();
|
||||
}
|
||||
assert(cb->getTownsInfo().size() == towns.size());
|
||||
}
|
||||
|
@ -887,12 +887,8 @@ void CGameHandler::endBattle(int3 tile, const CGHeroInstance * heroAttacker, con
|
||||
|
||||
if(battleResult.data->winner != BattleSide::DEFENDER && heroDefender) //remove beaten Defender
|
||||
{
|
||||
auto town = heroDefender->visitedTown;
|
||||
RemoveObject ro(heroDefender->id);
|
||||
sendAndApply(&ro);
|
||||
|
||||
if(town && !town->garrisonHero) // TODO: that must be called from CGHeroInstance or CGTownInstance
|
||||
town->battleFinished(heroAttacker, *battleResult.get());
|
||||
}
|
||||
|
||||
if(battleResult.data->winner == BattleSide::DEFENDER
|
||||
@ -5341,7 +5337,22 @@ void CGameHandler::objectVisited(const CGObjectInstance * obj, const CGHeroInsta
|
||||
|
||||
auto startVisit = [&](ObjectVisitStarted & event)
|
||||
{
|
||||
visitQuery = std::make_shared<CObjectVisitQuery>(this, obj, h, obj->visitablePos());
|
||||
auto visitedObject = obj;
|
||||
|
||||
if(obj->ID == Obj::HERO)
|
||||
{
|
||||
auto visitedHero = static_cast<const CGHeroInstance *>(obj);
|
||||
const auto visitedTown = visitedHero->visitedTown;
|
||||
|
||||
if(visitedTown)
|
||||
{
|
||||
const bool isEnemy = visitedHero->getOwner() != h->getOwner();
|
||||
|
||||
if(isEnemy && !visitedTown->isBattleOutsideTown(visitedHero))
|
||||
visitedObject = visitedTown;
|
||||
}
|
||||
}
|
||||
visitQuery = std::make_shared<CObjectVisitQuery>(this, visitedObject, h, visitedObject->visitablePos());
|
||||
queries.addQuery(visitQuery); //TODO real visit pos
|
||||
|
||||
HeroVisit hv;
|
||||
|
Loading…
x
Reference in New Issue
Block a user