Enrico Weigelt, metux IT consult
2017-01-25 08:29:46 UTC
We have several places which are just interested in Player's ports
instead of all colonies. Instead of filtering the lists ourselves,
just ask Player for ports instead of all colonies.
---
src/net/sf/freecol/common/model/Unit.java | 4 ++--
src/net/sf/freecol/server/ai/EuropeanAIPlayer.java | 4 ++--
src/net/sf/freecol/server/ai/REFAIPlayer.java | 4 ++--
3 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/src/net/sf/freecol/common/model/Unit.java b/src/net/sf/freecol/common/model/Unit.java
index f746e110008..436da2aa33c 100644
--- a/src/net/sf/freecol/common/model/Unit.java
+++ b/src/net/sf/freecol/common/model/Unit.java
@@ -3021,8 +3021,8 @@ public class Unit extends GoodsLocation
// Ocean travel required, destination blocked.
// Find the closest available connected port.
final Predicate<Settlement> portPredicate = s ->
- s != ignoreSrc && s != ignoreDst && s.isConnectedPort();
- sett = minimize(getOwner().getSettlements(), portPredicate,
+ s != ignoreSrc && s != ignoreDst;
+ sett = minimize(getOwner().getPorts(), portPredicate,
settlementComparator);
path = (sett == null) ? null : this.findPath(sett);
break;
diff --git a/src/net/sf/freecol/server/ai/EuropeanAIPlayer.java b/src/net/sf/freecol/server/ai/EuropeanAIPlayer.java
index e0c6907413d..43931858669 100644
--- a/src/net/sf/freecol/server/ai/EuropeanAIPlayer.java
+++ b/src/net/sf/freecol/server/ai/EuropeanAIPlayer.java
@@ -549,8 +549,8 @@ public class EuropeanAIPlayer extends MissionAIPlayer {
: score / (stockade.getLevel() + 1.5);
});
target = maximize(flatten(enemies, Player::isEuropean,
- Player::getColonies),
- Colony::isConnectedPort, targetScore);
+ Player::getPorts),
+ targetScore);
}
// Otherwise attack something near a weak colony
if (target == null && !colonies.isEmpty()) {
diff --git a/src/net/sf/freecol/server/ai/REFAIPlayer.java b/src/net/sf/freecol/server/ai/REFAIPlayer.java
index 971647ca0b6..f261cbc315d 100644
--- a/src/net/sf/freecol/server/ai/REFAIPlayer.java
+++ b/src/net/sf/freecol/server/ai/REFAIPlayer.java
@@ -188,14 +188,14 @@ public class REFAIPlayer extends EuropeanAIPlayer {
= new CachingFunction<Colony, PathNode>(c ->
unit.findPath(carrier, c, carrier, null));
final Predicate<Colony> portPred = c ->
- (!port || c.isConnectedPort()) && pathMapper.apply(c) != null;
+ pathMapper.apply(c) != null;
final Function<Colony, TargetTuple> newTupleMapper = c -> {
PathNode path = pathMapper.apply(c);
return new TargetTuple(c, path,
UnitSeekAndDestroyMission.scorePath(aiu, path));
};
final List<TargetTuple> targets
- = transform(flatten(player.getRebels(), Player::getColonies),
+ = transform(flatten(player.getRebels(), (port ? Player::getPorts : Player::getColonies)),
portPred, newTupleMapper);
// Increase score for drydock/s, musket and tools suppliers,
instead of all colonies. Instead of filtering the lists ourselves,
just ask Player for ports instead of all colonies.
---
src/net/sf/freecol/common/model/Unit.java | 4 ++--
src/net/sf/freecol/server/ai/EuropeanAIPlayer.java | 4 ++--
src/net/sf/freecol/server/ai/REFAIPlayer.java | 4 ++--
3 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/src/net/sf/freecol/common/model/Unit.java b/src/net/sf/freecol/common/model/Unit.java
index f746e110008..436da2aa33c 100644
--- a/src/net/sf/freecol/common/model/Unit.java
+++ b/src/net/sf/freecol/common/model/Unit.java
@@ -3021,8 +3021,8 @@ public class Unit extends GoodsLocation
// Ocean travel required, destination blocked.
// Find the closest available connected port.
final Predicate<Settlement> portPredicate = s ->
- s != ignoreSrc && s != ignoreDst && s.isConnectedPort();
- sett = minimize(getOwner().getSettlements(), portPredicate,
+ s != ignoreSrc && s != ignoreDst;
+ sett = minimize(getOwner().getPorts(), portPredicate,
settlementComparator);
path = (sett == null) ? null : this.findPath(sett);
break;
diff --git a/src/net/sf/freecol/server/ai/EuropeanAIPlayer.java b/src/net/sf/freecol/server/ai/EuropeanAIPlayer.java
index e0c6907413d..43931858669 100644
--- a/src/net/sf/freecol/server/ai/EuropeanAIPlayer.java
+++ b/src/net/sf/freecol/server/ai/EuropeanAIPlayer.java
@@ -549,8 +549,8 @@ public class EuropeanAIPlayer extends MissionAIPlayer {
: score / (stockade.getLevel() + 1.5);
});
target = maximize(flatten(enemies, Player::isEuropean,
- Player::getColonies),
- Colony::isConnectedPort, targetScore);
+ Player::getPorts),
+ targetScore);
}
// Otherwise attack something near a weak colony
if (target == null && !colonies.isEmpty()) {
diff --git a/src/net/sf/freecol/server/ai/REFAIPlayer.java b/src/net/sf/freecol/server/ai/REFAIPlayer.java
index 971647ca0b6..f261cbc315d 100644
--- a/src/net/sf/freecol/server/ai/REFAIPlayer.java
+++ b/src/net/sf/freecol/server/ai/REFAIPlayer.java
@@ -188,14 +188,14 @@ public class REFAIPlayer extends EuropeanAIPlayer {
= new CachingFunction<Colony, PathNode>(c ->
unit.findPath(carrier, c, carrier, null));
final Predicate<Colony> portPred = c ->
- (!port || c.isConnectedPort()) && pathMapper.apply(c) != null;
+ pathMapper.apply(c) != null;
final Function<Colony, TargetTuple> newTupleMapper = c -> {
PathNode path = pathMapper.apply(c);
return new TargetTuple(c, path,
UnitSeekAndDestroyMission.scorePath(aiu, path));
};
final List<TargetTuple> targets
- = transform(flatten(player.getRebels(), Player::getColonies),
+ = transform(flatten(player.getRebels(), (port ? Player::getPorts : Player::getColonies)),
portPred, newTupleMapper);
// Increase score for drydock/s, musket and tools suppliers,
--
2.11.0.rc0.7.gbe5a750
2.11.0.rc0.7.gbe5a750