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

FIXME: perhaps it would be even better to do that in the loop that creates the 
unit list.
---
 .../freecol/client/control/InGameController.java   | 25 ++++++++++++++++------
 1 file changed, 18 insertions(+), 7 deletions(-)

diff --git a/src/net/sf/freecol/client/control/InGameController.java 
b/src/net/sf/freecol/client/control/InGameController.java
index 07ca1d4598e..5bd020fa78e 100644
--- a/src/net/sf/freecol/client/control/InGameController.java
+++ b/src/net/sf/freecol/client/control/InGameController.java
@@ -1280,6 +1280,13 @@ public final class InGameController extends 
FreeColClientHolder {
         return false;
     }
 
+    private class UnitChoiceList extends ArrayList<ChoiceItem<Unit>>
+    {
+        public void addUnit(Unit u) {
+            add(new 
ChoiceItem<Unit>(u.getDescription(Unit.UnitLabelType.NATIONAL), u));
+        }
+    }
+
     /**
      * Check the carrier for passengers to disembark, possibly
      * snatching a useful result from the jaws of a
@@ -1310,9 +1317,11 @@ public final class InGameController extends 
FreeColClientHolder {
                 moveDirection(disembarkable.get(0), direction, false);
             }
         } else {
-            List<ChoiceItem<Unit>> choices
-                = transform(disembarkable, alwaysTrue(), u ->
-                    new 
ChoiceItem<Unit>(u.getDescription(Unit.UnitLabelType.NATIONAL), u));
+            UnitChoiceList choices = new UnitChoiceList();
+
+            for (Unit u : disembarkable)
+                choices.addUnit(u);
+
             choices.add(new ChoiceItem<>(Messages.message("all"), unit));
 
             // Use moveDirection() to disembark units as while the
@@ -1358,10 +1367,12 @@ public final class InGameController extends 
FreeColClientHolder {
         Tile sourceTile = unit.getTile();
         Tile destinationTile = sourceTile.getNeighbourOrNull(direction);
         Unit carrier = null;
-        List<ChoiceItem<Unit>> choices
-            = transform(destinationTile.getUnits(),
-                        u -> u.canAdd(unit),
-                        u -> new 
ChoiceItem<>(u.getDescription(Unit.UnitLabelType.NATIONAL), u));
+
+        UnitChoiceList choices = new UnitChoiceList();
+        for (Unit u : destinationTile.getUnits())
+            if (u.canAdd(unit))
+                choices.addUnit(u);
+
         if (choices.isEmpty()) {
             throw new RuntimeException("Unit " + unit.getId()
                 + " found no carrier to embark upon.");
-- 
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