int nMove = entity.getMovementType(); if (nMove == Entity.MovementType.TRACKED || nMove == Entity.MovementType.WHEELED || nMove == Entity.MovementType.HOVER) { delta_e *= 2; }
    public static int getMovementCostFor(Game game, int entityId,                                              Coords src, Coords dest,                                             int movementType) {        final Entity entity = game.getEntity(entityId);        final Hex srcHex = game.board.getHex(src);        final Hex destHex = game.board.getHex(dest);                // arguments valid?        if (entity == null) {            throw new IllegalArgumentException("Entity invalid.");        }        if (src.distance(dest) > 1) {            throw new IllegalArgumentException("Coordinates must be adjacent.");        }        if (srcHex == null || destHex == null) {            throw new IllegalArgumentException("Coordinates must be on the board.");        }                // jumping always costs 1        if (movementType == Entity.MOVE_JUMP) {            return 1;        }                int mp = 1;                // account for terrain        if (destHex.levelOf(Terrain.ROUGH) > 0) {            mp++;        }        if (destHex.levelOf(Terrain.RUBBLE) > 0) {            mp++;        }        if (destHex.levelOf(Terrain.WOODS) == 1) {            mp++;        } else if (destHex.levelOf(Terrain.WOODS) > 1) {            mp += 2;        }        if (destHex.levelOf(Terrain.WATER) == 1) {            mp++;        } else if (destHex.levelOf(Terrain.WATER) > 1) {            mp += 3;        }        // account for elevation?        if (srcHex.floor() != destHex.floor()) {            int delta_e = Math.abs(srcHex.floor() - destHex.floor());            mp += delta_e;        }                return mp;    }