1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-07-15 01:24:45 +02:00

Fix crash on moving double-wide units in some obstacle configurations

This commit is contained in:
Ivan Savenko
2025-07-01 12:34:53 +03:00
parent 835120237d
commit bc4a1b06fc
2 changed files with 15 additions and 10 deletions

View File

@ -392,14 +392,16 @@ BattleHexArray BattleFieldController::getHighlightedHexesForMovementTarget()
if (stack->doubleWide())
{
const bool canMoveHeadHere = availableHexes.contains(hoveredHex);
const bool canMoveTailHere = availableHexes.contains(hoveredHex.cloneInDirection(stack->destShiftDir()));
const bool backwardsMove = stack->unitSide() == BattleSide::ATTACKER ?
hoveredHex.getX() < stack->getPosition().getX():
hoveredHex.getX() > stack->getPosition().getX();
hoveredHex.getX() < stack->getPosition().getX():
hoveredHex.getX() > stack->getPosition().getX();
if (backwardsMove && availableHexes.contains(hoveredHex.cloneInDirection(stack->destShiftDir())))
if(canMoveTailHere && (backwardsMove || !canMoveHeadHere))
return {hoveredHex, hoveredHex.cloneInDirection(stack->destShiftDir())};
if (availableHexes.contains(hoveredHex))
if (canMoveHeadHere)
return {hoveredHex, stack->occupiedHex(hoveredHex)};
return {};