1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-01-26 03:52:01 +02:00

* Possibly fixed #870

* Fixed crash after catapult successfully destroyed one of turrets (stack queue wasn't properly updated)
This commit is contained in:
Michał W. Urbańczyk 2012-02-22 17:43:59 +00:00
parent 37d3bea0a9
commit 3546c7841a
2 changed files with 9 additions and 5 deletions

View File

@ -1558,6 +1558,8 @@ void CBattleInterface::stackRemoved(int stackID)
delete creAnims[stackID];
creAnims.erase(stackID);
creDir.erase(stackID);
queue->update();
}
void CBattleInterface::stackActivated(const CStack * stack) //TODO: check it all before game state is changed due to abilities

View File

@ -59,7 +59,11 @@ std::vector<int> CBattleInfoCallback::battleGetDistances(const CStack * stack, B
if(!hex.isValid())
hex = stack->position;
std::vector<int> ret;
std::vector<int> ret(GameConstants::BFIELD_SIZE, -1); //fill initial ret with -1's
if(!hex.isValid()) //stack has bad position? probably castle turret, return initial values (they can't move)
return ret;
bool ac[GameConstants::BFIELD_SIZE] = {0};
std::set<BattleHex> occupyable;
gs->curB->getAccessibilityMap(ac, stack->doubleWide(), stack->attackerOwned, false, occupyable, stack->hasBonusOfType(Bonus::FLYING), stack);
@ -69,10 +73,8 @@ std::vector<int> CBattleInfoCallback::battleGetDistances(const CStack * stack, B
for(int i=0; i<GameConstants::BFIELD_SIZE; ++i)
{
if(pr[i] == -1)
ret.push_back(-1);
else
ret.push_back(dist[i]);
if(pr[i] != -1)
ret[i] = dist[i];
}
if(predecessors)