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

---
 src/net/sf/freecol/common/model/Colony.java | 58 +++++++++++++++++++----------
 1 file changed, 39 insertions(+), 19 deletions(-)

diff --git a/src/net/sf/freecol/common/model/Colony.java 
b/src/net/sf/freecol/common/model/Colony.java
index dcf6e936bd5..86107881814 100644
--- a/src/net/sf/freecol/common/model/Colony.java
+++ b/src/net/sf/freecol/common/model/Colony.java
@@ -237,7 +237,12 @@ public class Colony extends Settlement implements 
Nameable, TradeLocation {
      * @return The corresponding {@code ColonyTile}, or null if not found.
      */
     public ColonyTile getColonyTile(Tile tile) {
-        return find(getColonyTiles(), matchKey(tile, ColonyTile::getWorkTile));
+        synchronized (this.colonyTiles) {
+            for (ColonyTile t : colonyTiles)
+                if (tile == t.getWorkTile())
+                    return t;
+        }
+        return null;
     }
 
     /**
@@ -1876,9 +1881,11 @@ public class Colony extends Settlement implements 
Nameable, TradeLocation {
      * @return {@code true} if this unit type could be added.
      */
     public boolean canTrain(UnitType unitType) {
-        return hasAbility(Ability.TEACH)
-                && any(getBuildings(),
-                b -> b.canTeach() && b.canAddType(unitType));
+        if (hasAbility(Ability.TEACH))
+            for (Building b : getBuildings())
+                if (b.canTeach() && b.canAddType(unitType))
+                    return true;
+        return false;
     }
 
     /**
@@ -1904,11 +1911,13 @@ public class Colony extends Settlement implements 
Nameable, TradeLocation {
      * @return A potential teacher, or null of none found.
      */
     public Unit findTeacher(Unit student) {
-        return 
(getSpecification().getBoolean(GameOptions.ALLOW_STUDENT_SELECTION))
-                ? null // No automatic assignment
-                : find(flatten(getBuildings(), Building::canTeach,
-                Building::getUnits),
-                u -> u.getStudent() == null);
+        if 
(!getSpecification().getBoolean(GameOptions.ALLOW_STUDENT_SELECTION))
+            for (Building b : getBuildings())
+                if (b.canTeach())
+                    for (Unit u : b.getUnits())
+                        if (u.getStudent() == null)
+                            return u;
+        return null;
     }
 
     /**
@@ -2509,16 +2518,27 @@ loop:   for (WorkLocation wl : 
getWorkLocationsForProducing(goodsType)) {
     @SuppressWarnings("unchecked")
     public <T extends FreeColObject> T getCorresponding(T fco) {
         final String id = fco.getId();
-        return (fco instanceof WorkLocation)
-                ? (T)findWorkLocationById(id)
-                : (fco instanceof Tile)
-                ? (T)((getTile().getId().equals(id)) ? getTile()
-                : find(map(getColonyTiles(), ColonyTile::getWorkTile),
-                matchKeyEquals(id, Tile::getId)))
-                : (fco instanceof Unit)
-                ? (T)find(getAllUnits(),
-                matchKeyEquals(id, Unit::getId))
-                : null;
+
+        if (fco instanceof WorkLocation)
+            return (T)findWorkLocationById(id);
+        else if (fco instanceof Tile) {
+            Tile t = getTile();
+            if (t.getId().equals(id))
+                return (T)t;
+
+            for (ColonyTile ct : getColonyTiles()) {
+                t = ct.getWorkTile();
+                if (Utils.equals(id, t.getId()))
+                    return (T)t;
+            }
+        }
+        else if (fco instanceof Unit) {
+            for (Unit u : getAllUnits())
+                if (Utils.equals(id, u.getId()))
+                    return (T)u;
+        }
+
+        return null;
     }
 
 
-- 
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