final MovePath expandedPath = adjacent.next(); if (expandedPath.getLastStep().isMovementPossible(getGame(), startingPos, startingElev)) { MovePath expandedPath = candidatePath.clone(); expandedPath.addStep(type); if (expandedPath.getLastStep().isMovementPossible(getGame(), startingPos, startingElev)) {
@Override public boolean shouldStay(MovePath edge) { if (edge.getEntity().isAero()) { /* * isMovemementPossible is currently not working for aero units, * so we have to use a substitute. */ if (edge.length() == 0) { return true; } else { MoveStep lastStep = edge.getLastStep(); return (lastStep == null) || lastStep.getMovementType(true) != EntityMovementType.MOVE_ILLEGAL; } } Coords previousPosition; int previousElevation; if (edge.length() > 1) { MoveStep previousStep = edge.getSecondLastStep(); previousElevation = previousStep.getElevation(); previousPosition = previousStep.getPosition(); } else { Entity entity = edge.getEntity(); previousElevation = entity.getElevation(); previousPosition = entity.getPosition(); } return (edge.getLastStep().isMovementPossible( game, previousPosition, previousElevation)); } }
if (!isMovementPossible(game, lastPos, prev.getElevation()) || isUnloaded) { movementType = EntityMovementType.MOVE_ILLEGAL;