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

---
 src/net/sf/freecol/common/model/NativeTrade.java   | 29 ++++++++++++++++++++++
 src/net/sf/freecol/server/ai/NativeAIPlayer.java   |  6 ++---
 .../freecol/server/control/InGameController.java   |  9 +++----
 3 files changed, 35 insertions(+), 9 deletions(-)

diff --git a/src/net/sf/freecol/common/model/NativeTrade.java 
b/src/net/sf/freecol/common/model/NativeTrade.java
index 28b8e65d0ae..17b356615a5 100644
--- a/src/net/sf/freecol/common/model/NativeTrade.java
+++ b/src/net/sf/freecol/common/model/NativeTrade.java
@@ -360,6 +360,13 @@ public class NativeTrade extends FreeColGameObject {
         this.item = nti;
     }
 
+    private static NativeTradeItem findMatchingItem(List<NativeTradeItem> 
items, NativeTradeItem i) {
+        for (NativeTradeItem nt : items)
+            if (nt.getGoods().equals(i.getGoods()))
+                return nt;
+        return null;
+    }
+
     /**
      * Get the list of items the unit is able to offer the settlement.
      *
@@ -372,6 +379,17 @@ public class NativeTrade extends FreeColGameObject {
     }
 
     /**
+     * Find a item the unit is able to offer the settlement.
+     *
+     * Note: some of these items might be currently invalid.
+     *
+     * @return A {@code NativeTradeItem} the unit might sell.
+     */
+    public NativeTradeItem findUnitToSettlement(NativeTradeItem i) {
+        return findMatchingItem(this.unitToSettlement, i);
+    }
+
+    /**
      * Get the list of items the settlement is able to offer the unit.
      *
      * Note: some of these items might be currently invalid.
@@ -383,6 +401,17 @@ public class NativeTrade extends FreeColGameObject {
     }
 
     /**
+     * Find an item the settlement is able to offer the unit.
+     *
+     * Note: some of these items might be currently invalid.
+     *
+     * @return A {@code NativeTradeItem} the unit might buy.
+     */
+    public NativeTradeItem findSettlementToUnit(NativeTradeItem i) {
+        return findMatchingItem(this.settlementToUnit, i);
+    }
+
+    /**
      * Add an item to the unit list of items.
      *
      * @param nti The {@code NativeTradeItem} to add.
diff --git a/src/net/sf/freecol/server/ai/NativeAIPlayer.java 
b/src/net/sf/freecol/server/ai/NativeAIPlayer.java
index feb3558edcc..87be4e3bac9 100644
--- a/src/net/sf/freecol/server/ai/NativeAIPlayer.java
+++ b/src/net/sf/freecol/server/ai/NativeAIPlayer.java
@@ -897,7 +897,7 @@ public class NativeAIPlayer extends MissionAIPlayer {
             }
             if (anger < 0) return NativeTradeAction.NAK_HOSTILE;
             updateTrade(nt, anger);
-            ours = find(nt.getSettlementToUnit(), nt.getItem().goodsMatcher());
+            ours = nt.findSettlementToUnit(nt.getItem());
             if (ours == null) return NativeTradeAction.NAK_INVALID;
             if (nt.getItem().priceIsSet()
                 && nt.getItem().getPrice() >= ours.getPrice()) {
@@ -932,7 +932,7 @@ public class NativeAIPlayer extends MissionAIPlayer {
             }
             if (anger < 0) return NativeTradeAction.NAK_HOSTILE;
             updateTrade(nt, anger);
-            ours = find(nt.getUnitToSettlement(), nt.getItem().goodsMatcher());
+            ours = nt.findUnitToSettlement(nt.getItem());
             if (ours == null) return NativeTradeAction.NAK_INVALID;
             if (nt.getItem().priceIsSet()
                 && nt.getItem().getPrice() <= ours.getPrice()) {
@@ -949,7 +949,7 @@ public class NativeAIPlayer extends MissionAIPlayer {
             return NativeTradeAction.ACK_SELL_HAGGLE;
 
         case GIFT:
-            ours = find(nt.getUnitToSettlement(), nt.getItem().goodsMatcher());
+            ours = nt.findUnitToSettlement(nt.getItem());
             if (ours == null) return NativeTradeAction.NAK_INVALID;
             return (is.canAdd(nt.getItem().getGoods()))
                 ? NativeTradeAction.ACK_GIFT
diff --git a/src/net/sf/freecol/server/control/InGameController.java 
b/src/net/sf/freecol/server/control/InGameController.java
index 72a2eed515f..4b1f6cc7a04 100644
--- a/src/net/sf/freecol/server/control/InGameController.java
+++ b/src/net/sf/freecol/server/control/InGameController.java
@@ -2965,8 +2965,7 @@ public final class InGameController extends Controller {
                 return serverPlayer.clientError("Null purchase: " + nt);
             } else if (!nt.canBuy()) {
                 return serverPlayer.clientError("Can not buy: " + nt);
-            } else if (find(nt.getSettlementToUnit(),
-                            item.goodsMatcher()) == null) {
+            } else if (nt.findSettlementToUnit(item) == null) {
                 return serverPlayer.clientError("Item missing for "
                     + action + ": " + nt);
             }
@@ -2982,8 +2981,7 @@ public final class InGameController extends Controller {
                 return serverPlayer.clientError("Null sale: " + nt);
             } else if (!nt.canSell()) {
                 return serverPlayer.clientError("Can not sell: " + nt);
-            } else if (find(nt.getUnitToSettlement(),
-                            item.goodsMatcher()) == null) {
+            } else if (nt.findUnitToSettlement(item) == null) {
                 return serverPlayer.clientError("Item missing for "
                     + action + ": " + nt);
             }
@@ -2999,8 +2997,7 @@ public final class InGameController extends Controller {
                 return serverPlayer.clientError("Null gift: " + nt);
             } else if (!nt.canGift()) {
                 return serverPlayer.clientError("Can not gift: " + nt);
-            } else if (find(nt.getUnitToSettlement(),
-                            item.goodsMatcher()) == null) {
+            } else if (nt.findUnitToSettlement(item) == null) {
                 return serverPlayer.clientError("Item missing for "
                     + action + ": " + nt);
             }
-- 
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