From: "Enrico Weigelt, metux IT consult" <enrico.weig...@gr13.net>

---
 .../common/model/pathfinding/CostDeciders.java     | 34 +++++++++++-----------
 1 file changed, 17 insertions(+), 17 deletions(-)

diff --git a/src/net/sf/freecol/common/model/pathfinding/CostDeciders.java 
b/src/net/sf/freecol/common/model/pathfinding/CostDeciders.java
index 5fa82b1d58a..2f83cd2d892 100644
--- a/src/net/sf/freecol/common/model/pathfinding/CostDeciders.java
+++ b/src/net/sf/freecol/common/model/pathfinding/CostDeciders.java
@@ -19,8 +19,6 @@
 
 package net.sf.freecol.common.model.pathfinding;
 
-import java.util.function.Predicate;
-
 import net.sf.freecol.common.model.Ability;
 import net.sf.freecol.common.model.Europe;
 import net.sf.freecol.common.model.Location;
@@ -185,23 +183,25 @@ public final class CostDeciders {
                            Location newLocation, int movesLeft) {
             int cost = super.getCost(unit, oldLocation, newLocation, 
movesLeft);
             Tile tile = newLocation.getTile();
-            if (cost != ILLEGAL_MOVE && cost != Map.INFINITY && tile != null) {
-                if (tile.isDangerousToShip(unit)) {
-                    cost = ILLEGAL_MOVE;
-                } else {
-                    // Move might end if there is a credible naval
-                    // threat in an adjacent tile.
-                    final Player owner = unit.getOwner();
-                    final Predicate<Unit> threatPred = u ->
-                        (u.getOwner() != owner
-                            && (u.hasAbility(Ability.PIRACY)
-                                || (u.getOwner().atWarWith(owner)
-                                    && u.isOffensiveUnit())));
-                    if (any(flatten(tile.getSurroundingTiles(1,1),
-                                    Tile::getUnits),
-                            threatPred)) {
+
+            if (cost == ILLEGAL_MOVE || cost == Map.INFINITY && tile == null)
+                return cost;
+
+            if (tile.isDangerousToShip(unit))
+                return ILLEGAL_MOVE;
+
+            // Move might end if there is a credible naval
+            // threat in an adjacent tile.
+            final Player owner = unit.getOwner();
+            for (Tile t : tile.getSurroundingTiles(1,1)) {
+                for (Unit u : t.getUnits()) {
+                    if (u.getOwner() != owner
+                        && (u.hasAbility(Ability.PIRACY) ||
+                            (u.getOwner().atWarWith(owner) && 
u.isOffensiveUnit())
+                    )) {
                         this.movesLeft = 0;
                         this.newTurns++;
+                        return cost;
                     }
                 }
             }
-- 
2.11.0.rc0.7.gbe5a750


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
Freecol-developers mailing list
Freecol-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freecol-developers

Reply via email to