From: "Enrico Weigelt, metux IT consult" <[email protected]>
---
.../freecol/client/gui/panel/FindSettlementPanel.java | 2 +-
src/net/sf/freecol/common/model/Game.java | 8 ++++++--
src/net/sf/freecol/common/model/Operand.java | 6 +++---
src/net/sf/freecol/common/model/Player.java | 18 ++++++++++--------
src/net/sf/freecol/common/model/Unit.java | 2 +-
src/net/sf/freecol/server/ai/EuropeanAIPlayer.java | 2 +-
src/net/sf/freecol/server/model/ServerPlayer.java | 6 +++---
test/src/net/sf/freecol/common/model/ColonyTest.java | 2 +-
8 files changed, 26 insertions(+), 20 deletions(-)
diff --git a/src/net/sf/freecol/client/gui/panel/FindSettlementPanel.java
b/src/net/sf/freecol/client/gui/panel/FindSettlementPanel.java
index d17db5b1c88..718d7d1baf7 100644
--- a/src/net/sf/freecol/client/gui/panel/FindSettlementPanel.java
+++ b/src/net/sf/freecol/client/gui/panel/FindSettlementPanel.java
@@ -177,7 +177,7 @@ public final class FindSettlementPanel extends FreeColPanel
break;
}
if (ok) {
- for (Settlement s : player.getSettlementList()) {
+ for (Settlement s : player.getSettlements()) {
model.addElement(s);
}
}
diff --git a/src/net/sf/freecol/common/model/Game.java
b/src/net/sf/freecol/common/model/Game.java
index 4c1c1004beb..c98265b33e8 100644
--- a/src/net/sf/freecol/common/model/Game.java
+++ b/src/net/sf/freecol/common/model/Game.java
@@ -1070,8 +1070,12 @@ public class Game extends FreeColGameObject {
* specified name (the settlement might not be visible to a client).
*/
public Settlement getSettlementByName(String name) {
- return find(flatten(getLivePlayers(), Player::getSettlements),
- matchKeyEquals(name, Settlement::getName));
+ for (Player p : this.players)
+ if (p.isLive())
+ for (Settlement s : p.getSettlements())
+ if (Utils.equals(name, s.getName()))
+ return s;
+ return null;
}
/**
diff --git a/src/net/sf/freecol/common/model/Operand.java
b/src/net/sf/freecol/common/model/Operand.java
index 97f4ee76b21..a91ecd4034f 100644
--- a/src/net/sf/freecol/common/model/Operand.java
+++ b/src/net/sf/freecol/common/model/Operand.java
@@ -210,7 +210,7 @@ public class Operand extends Scope {
c -> ourCount(c.getBuildings()));
break;
case SETTLEMENTS:
- result += ourCount(player.getSettlementList());
+ result += ourCount(player.getSettlements());
break;
case FOUNDING_FATHERS:
result += ourCount(player.getFathers());
@@ -249,11 +249,11 @@ public class Operand extends Scope {
return sum(player.getColonies(), c -> ourCount(c.getBuildings()));
case SETTLEMENTS:
if (methodName == null) {
- return ourCount(player.getSettlementList())
+ return ourCount(player.getSettlements())
+ spec.getInteger(GameOptions.SETTLEMENT_LIMIT_MODIFIER);
}
final String methodValue = getMethodValue();
- return count(player.getSettlementList(),
+ return count(player.getSettlements(),
s -> String.valueOf(s.invokeMethod(methodName,
Boolean.class, Boolean.FALSE)).equals(methodValue));
case FOUNDING_FATHERS:
diff --git a/src/net/sf/freecol/common/model/Player.java
b/src/net/sf/freecol/common/model/Player.java
index 1714d5ec7f7..feeff525076 100644
--- a/src/net/sf/freecol/common/model/Player.java
+++ b/src/net/sf/freecol/common/model/Player.java
@@ -2253,21 +2253,23 @@ public class Player extends FreeColGameObject
implements Nameable {
/**
* Gets a the settlements this player owns.
*
- * @return The list of {@code Settlements} this player owns.
+ * @return The list of {@code Settlement}s this player owns.
*/
- public List<Settlement> getSettlementList() {
+ public List<Settlement> getSettlements() {
synchronized (this.settlements) {
return new ArrayList<>(this.settlements);
}
}
/**
- * Get a stream of the settlements this player owns.
+ * Gets the first settlement this player owns.
*
- * @return The strean of {@code Settlements} this player owns.
+ * @return The first {@code Settlement} this player owns.
*/
- public Stream<Settlement> getSettlements() {
- return getSettlementList().stream();
+ public Settlement getFirstSettlement() {
+ synchronized (this.settlements) {
+ return this.settlements.get(0);
+ }
}
/**
@@ -2916,7 +2918,7 @@ public class Player extends FreeColGameObject implements
Nameable {
vismap.setVisible(unit);
// All the settlements.
- for (Settlement settlement : getSettlementList())
+ for (Settlement settlement : getSettlements())
vismap.setVisible(settlement);
if (isEuropean()) {
@@ -3381,7 +3383,7 @@ public class Player extends FreeColGameObject implements
Nameable {
* @return True if the player has no settlements (on the map) yet.
*/
private boolean hasZeroSettlements() {
- List<Settlement> settlements = getSettlementList();
+ List<Settlement> settlements = getSettlements();
return settlements.isEmpty()
|| (settlements.size() == 1
&& settlements.get(0).getTile().getSettlement() == null);
diff --git a/src/net/sf/freecol/common/model/Unit.java
b/src/net/sf/freecol/common/model/Unit.java
index 5be31dd2bc9..e4e545a8559 100644
--- a/src/net/sf/freecol/common/model/Unit.java
+++ b/src/net/sf/freecol/common/model/Unit.java
@@ -2648,7 +2648,7 @@ public class Unit extends GoodsLocation
final Player owner = getOwner();
Settlement sett = minimize(owner.getSettlements(),
settlementStartComparator);
- if (sett == null) sett = first(owner.getSettlements());
+ if (sett == null) sett = owner.getFirstSettlement();
if (sett != null) return sett;
// Owner has no settlements. If it is the REF, start from a
diff --git a/src/net/sf/freecol/server/ai/EuropeanAIPlayer.java
b/src/net/sf/freecol/server/ai/EuropeanAIPlayer.java
index ea707d51be6..61f71351dd8 100644
--- a/src/net/sf/freecol/server/ai/EuropeanAIPlayer.java
+++ b/src/net/sf/freecol/server/ai/EuropeanAIPlayer.java
@@ -1338,7 +1338,7 @@ public class EuropeanAIPlayer extends MissionAIPlayer {
if (!player.canBuildColonies()) return 0;
int nColonies = 0, nPorts = 0, nWorkers = 0, nEuropean = 0;
- for (Settlement settlement : player.getSettlementList()) {
+ for (Settlement settlement : player.getSettlements()) {
nColonies++;
if (settlement.isConnectedPort()) nPorts++;
nWorkers += count(settlement.getAllUnitsList(), Unit::isPerson);
diff --git a/src/net/sf/freecol/server/model/ServerPlayer.java
b/src/net/sf/freecol/server/model/ServerPlayer.java
index d904f23ffe2..d1cd92e0666 100644
--- a/src/net/sf/freecol/server/model/ServerPlayer.java
+++ b/src/net/sf/freecol/server/model/ServerPlayer.java
@@ -645,7 +645,7 @@ public class ServerPlayer extends Player implements
ServerModelObject {
}
// Remove settlements. Update formerly owned tiles.
- List<Settlement> settlements = getSettlementList();
+ List<Settlement> settlements = getSettlements();
while (!settlements.isEmpty()) {
csDisposeSettlement(settlements.remove(0), cs);
}
@@ -950,7 +950,7 @@ public class ServerPlayer extends Player implements
ServerModelObject {
}
invalidateCanSeeTiles();//+vis(this)
if (!reveal) {
- for (Settlement s : getSettlementList()) exploreForSettlement(s);
+ for (Settlement s : getSettlements()) exploreForSettlement(s);
for (Unit u : getUnitList()) exploreForUnit(u);
}
return result;
@@ -4360,7 +4360,7 @@ outer: for (Effect effect : effects) {
final Game game = getGame();
// Settlements
- List<Settlement> settlements = getSettlementList();
+ List<Settlement> settlements = getSettlements();
int newSoL = 0, newImmigration = getImmigration();
for (Settlement settlement : settlements) {
((ServerModelObject)settlement).csNewTurn(random, lb, cs);
diff --git a/test/src/net/sf/freecol/common/model/ColonyTest.java
b/test/src/net/sf/freecol/common/model/ColonyTest.java
index 71b1827cb34..fe2c1803eca 100644
--- a/test/src/net/sf/freecol/common/model/ColonyTest.java
+++ b/test/src/net/sf/freecol/common/model/ColonyTest.java
@@ -494,7 +494,7 @@ public class ColonyTest extends FreeColTestCase {
assertEquals(colony.getName(), copied.getName());
// Note: we can not check that player.hasSettlement(copied) is false
// because it too will use FCGO.equals().
- for (Settlement s : player.getSettlementList()) {
+ for (Settlement s : player.getSettlements()) {
assertFalse(s == copied);
}
--
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