From: "Enrico Weigelt, metux IT consult" <enrico.weig...@gr13.net>
--- src/net/sf/freecol/common/model/Unit.java | 51 ++++++++++++++++++++----------- 1 file changed, 34 insertions(+), 17 deletions(-) diff --git a/src/net/sf/freecol/common/model/Unit.java b/src/net/sf/freecol/common/model/Unit.java index d20ac2928f6..5be31dd2bc9 100644 --- a/src/net/sf/freecol/common/model/Unit.java +++ b/src/net/sf/freecol/common/model/Unit.java @@ -2997,12 +2997,6 @@ public class Unit extends GoodsLocation final Tile srcTile = getTile(); final Tile dstTile = dst.getTile(); final int dstCont = (dstTile == null) ? -1 : dstTile.getContiguity(); - final Comparator<Settlement> settlementComparator - = cachingIntComparator(s -> { - PathNode p = findPath(s); - return (p == null) ? INFINITY - : p.getTotalTurns() + dstTile.getDistanceTo(s.getTile()); - }); int type; if (isNaval()) { @@ -3047,20 +3041,43 @@ public class Unit extends GoodsLocation case 2: // Ocean travel required, destination blocked. // Find the closest available connected port. - final Predicate<Settlement> portPredicate = s -> - s != ignoreSrc && s != ignoreDst; - sett = minimize(getOwner().getPorts(), portPredicate, - settlementComparator); - path = (sett == null) ? null : this.findPath(sett); + sett = null; + path = null; + int sett_turns = INFINITY; + for (Settlement s : getOwner().getPorts()) { + if (!(s != ignoreSrc && s != ignoreDst)) continue; + + PathNode p = findPath(s); + int turns = (p == null ? INFINITY + : p.getTotalTurns() + dstTile.getDistanceTo(s.getTile())); + + if (sett == null || turns < sett_turns) { + sett = s; + sett_turns = turns; + path = p; + } + } + break; case 3: // Land travel. Find nearby settlement with correct contiguity. - final Predicate<Settlement> contiguityPred = s -> - s != ignoreSrc && s != ignoreDst - && s.getTile().getContiguity() == dstCont; - sett = minimize(getOwner().getSettlements(), contiguityPred, - settlementComparator); - path = (sett == null) ? null : this.findPath(sett); + sett = null; + path = null; + sett_turns = INFINITY; + for (Settlement s : getOwner().getSettlements()) { + if (!(s != ignoreSrc && s != ignoreDst && s.getTile().getContiguity() == dstCont)) + continue; + + PathNode p = findPath(s); + int turns = (p == null ? INFINITY + : p.getTotalTurns() + dstTile.getDistanceTo(s.getTile())); + + if (sett == null || turns < sett_turns) { + sett = s; + sett_turns = turns; + path = p; + } + } break; } return (path != null) ? path -- 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