From: "Enrico Weigelt, metux IT consult" <[email protected]>
---
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/freecol-developers