From: "Enrico Weigelt, metux IT consult" <[email protected]>
---
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/freecol-developers