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

---
 src/net/sf/freecol/common/model/Colony.java | 62 +++++++++++++----------------
 1 file changed, 27 insertions(+), 35 deletions(-)

diff --git a/src/net/sf/freecol/common/model/Colony.java 
b/src/net/sf/freecol/common/model/Colony.java
index 78564a13144..e960164fd84 100644
--- a/src/net/sf/freecol/common/model/Colony.java
+++ b/src/net/sf/freecol/common/model/Colony.java
@@ -29,7 +29,6 @@ import java.util.List;
 import java.util.Map.Entry;
 import java.util.Set;
 import java.util.function.Function;
-import java.util.function.Predicate;
 import java.util.function.ToIntFunction;
 import java.util.logging.Level;
 import java.util.logging.Logger;
@@ -2244,15 +2243,15 @@ loop:   for (WorkLocation wl : 
getWorkLocationsForProducing(goodsType)) {
                 t -> new TileImprovementSuggestion(t, null, INFINITY));
 
         // Consider improvements for all available colony tiles.
-        for (final ColonyTile ct : transform(getColonyTiles(),
-                WorkLocation::isAvailable)) {
-            final ToIntFunction<TileImprovementType> improve = cacheInt(ti ->
-                    ct.improvedBy(ti));
-            result.addAll(transform(spec.getTileImprovementTypeList(),
-                    ti -> !ti.isNatural() && improve.applyAsInt(ti) > 0,
-                    ti -> new TileImprovementSuggestion(ct.getWorkTile(),
-                            ti, improve.applyAsInt(ti))));
-        }
+        for (final ColonyTile ct : getColonyTiles())
+            if (ct.isAvailable())
+                for (TileImprovementType ti : 
spec.getTileImprovementTypeList())
+                    if (!ti.isNatural()) {
+                        int improved = ct.improvedBy(ti);
+                        if (improved > 0)
+                            result.add(new 
TileImprovementSuggestion(ct.getWorkTile(), ti, improved));
+                    }
+
         result.sort(TileImprovementSuggestion.descendingAmountComparator);
         return result;
     }
@@ -2365,42 +2364,35 @@ loop:   for (WorkLocation wl : 
getWorkLocationsForProducing(goodsType)) {
         // Add a message for goods required for the current building if any.
         BuildableType currentlyBuilding = getCurrentlyBuilding();
         if (currentlyBuilding != null) {
-            final Function<AbstractGoods, StringTemplate> bMapper = ag ->
-                    StringTemplate.template("model.colony.buildableNeedsGoods")
+            for (AbstractGoods ag : currentlyBuilding.getRequiredGoods())
+                if (ag.getType() == goodsType && amount < ag.getAmount())
+                    
result.add(StringTemplate.template("model.colony.buildableNeedsGoods")
                             .addName("%colony%", getName())
                             .addNamed("%buildable%", currentlyBuilding)
                             .addAmount("%amount%", ag.getAmount() - amount)
-                            .addNamed("%goodsType%", goodsType);
-            result.addAll(transform(currentlyBuilding.getRequiredGoods(),
-                    ag -> ag.getType() == goodsType
-                            && amount < ag.getAmount(),
-                    bMapper));
+                            .addNamed("%goodsType%", goodsType));
         }
 
         // Add insufficient production messages for each production location
         // that has a deficit in producing the goods type.
-        final Function<WorkLocation, ProductionInfo> piMapper = wl ->
-                getProductionInfo(wl);
-        final Predicate<WorkLocation> prodPred = isNotNull(piMapper);
-        final Function<WorkLocation, StringTemplate> pMapper = wl ->
-                getInsufficientProductionMessage(getProductionInfo(wl),
-                        wl.getProductionDeficit(goodsType));
-        result.addAll(transform(getWorkLocationsForProducing(goodsType),
-                prodPred, pMapper, toListNoNulls()));
+        for (WorkLocation wl : getWorkLocationsForProducing(goodsType)) {
+            ProductionInfo pi = getProductionInfo(wl);
+            if (pi != null)
+                result.add(getInsufficientProductionMessage(
+                    pi, wl.getProductionDeficit(goodsType)));
+        }
 
         // Add insufficient production messages for each consumption
         // location for the goods type where there is a consequent
         // deficit in production of a dependent goods.
-        final Function<WorkLocation, List<StringTemplate>> cMapper = wl -> {
-            final ProductionInfo info = getProductionInfo(wl);
-            final Function<AbstractGoods, StringTemplate> gMapper = ag ->
-                    getInsufficientProductionMessage(info,
-                            wl.getProductionDeficit(ag.getType()));
-            return transform(wl.getOutputs(), AbstractGoods::isStorable,
-                    gMapper, toListNoNulls());
-        };
-        result.addAll(transform(getWorkLocationsForConsuming(goodsType),
-                prodPred, cMapper, toAppendedList()));
+        for (WorkLocation wl : getWorkLocationsForConsuming(goodsType)) {
+            ProductionInfo pi = getProductionInfo(wl);
+            if (pi != null)
+                for (AbstractGoods ag : wl.getOutputs())
+                    if (ag.isStorable())
+                        result.add(getInsufficientProductionMessage(pi,
+                            wl.getProductionDeficit(ag.getType())));
+        }
 
         return result;
     }
-- 
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