diff --git a/core/src/com/unciv/logic/automation/NextTurnAutomation.kt b/core/src/com/unciv/logic/automation/NextTurnAutomation.kt index 18d4b2746f..0ee50a2c51 100644 --- a/core/src/com/unciv/logic/automation/NextTurnAutomation.kt +++ b/core/src/com/unciv/logic/automation/NextTurnAutomation.kt @@ -7,7 +7,13 @@ import com.unciv.logic.battle.MapUnitCombatant import com.unciv.logic.city.CityInfo import com.unciv.logic.city.INonPerpetualConstruction import com.unciv.logic.city.PerpetualConstruction -import com.unciv.logic.civilization.* +import com.unciv.logic.civilization.AlertType +import com.unciv.logic.civilization.CityStateType +import com.unciv.logic.civilization.CivilizationInfo +import com.unciv.logic.civilization.NotificationIcon +import com.unciv.logic.civilization.PlayerType +import com.unciv.logic.civilization.PopupAlert +import com.unciv.logic.civilization.ReligionState import com.unciv.logic.civilization.diplomacy.DiplomacyFlags import com.unciv.logic.civilization.diplomacy.DiplomaticModifiers import com.unciv.logic.civilization.diplomacy.DiplomaticStatus @@ -15,9 +21,20 @@ import com.unciv.logic.civilization.diplomacy.RelationshipLevel import com.unciv.logic.map.BFS import com.unciv.logic.map.MapUnit import com.unciv.logic.map.TileInfo -import com.unciv.logic.trade.* +import com.unciv.logic.trade.Trade +import com.unciv.logic.trade.TradeEvaluation +import com.unciv.logic.trade.TradeLogic +import com.unciv.logic.trade.TradeOffer +import com.unciv.logic.trade.TradeRequest +import com.unciv.logic.trade.TradeType import com.unciv.models.Counter -import com.unciv.models.ruleset.* +import com.unciv.models.ruleset.Belief +import com.unciv.models.ruleset.BeliefType +import com.unciv.models.ruleset.MilestoneType +import com.unciv.models.ruleset.ModOptionsConstants +import com.unciv.models.ruleset.Policy +import com.unciv.models.ruleset.PolicyBranch +import com.unciv.models.ruleset.Victory import com.unciv.models.ruleset.tech.Technology import com.unciv.models.ruleset.tile.ResourceType import com.unciv.models.ruleset.unique.UniqueType @@ -135,10 +152,10 @@ object NextTurnAutomation { val counterofferGifts = ArrayList() for (offer in tradeLogic.theirAvailableOffers) { - if (offer.type == TradeType.Gold && tradeRequest.trade.ourOffers.any { it.type == TradeType.Gold } || - offer.type == TradeType.Gold_Per_Turn && tradeRequest.trade.ourOffers.any { it.type == TradeType.Gold_Per_Turn }) + if ((offer.type == TradeType.Gold || offer.type == TradeType.Gold_Per_Turn) + && tradeRequest.trade.ourOffers.any { it.type == offer.type }) continue // Don't want to counteroffer straight gold for gold, that's silly - if (offer.amount == 0) + if (!offer.isTradable()) continue // For example resources gained by trade or CS if (offer.type == TradeType.City) continue // Players generally don't want to give up their cities, and they might misclick @@ -203,7 +220,7 @@ object NextTurnAutomation { delta = (delta * 2) / 3 // Only compensate some of it though, they're the ones asking us // First give some GPT, then lump sum - but only if they're not already offering the same for (ourGold in tradeLogic.ourAvailableOffers - .filter { it.type == TradeType.Gold || it.type == TradeType.Gold_Per_Turn } + .filter { it.isTradable() && (it.type == TradeType.Gold || it.type == TradeType.Gold_Per_Turn) } .sortedByDescending { it.type.ordinal }) { if (tradeLogic.currentTrade.theirOffers.none { it.type == ourGold.type } && counterofferAsks.keys.none { it.type == ourGold.type } ) { diff --git a/core/src/com/unciv/logic/trade/TradeOffer.kt b/core/src/com/unciv/logic/trade/TradeOffer.kt index 0931227205..41657cef2f 100644 --- a/core/src/com/unciv/logic/trade/TradeOffer.kt +++ b/core/src/com/unciv/logic/trade/TradeOffer.kt @@ -3,10 +3,10 @@ package com.unciv.logic.trade import com.unciv.Constants import com.unciv.UncivGame import com.unciv.logic.IsPartOfGameInfoSerialization +import com.unciv.logic.trade.TradeType.TradeTypeNumberType import com.unciv.models.ruleset.Speed import com.unciv.models.translations.tr import com.unciv.ui.utils.Fonts -import com.unciv.logic.trade.TradeType.TradeTypeNumberType data class TradeOffer(val name: String, val type: TradeType, var amount: Int = 1, var duration: Int) : IsPartOfGameInfoSerialization { @@ -32,6 +32,8 @@ data class TradeOffer(val name: String, val type: TradeType, var amount: Int = 1 && offer.amount == amount } + fun isTradable() = amount > 0 + fun getOfferText(untradable: Int = 0): String { var offerText = when(type){ TradeType.WarDeclaration -> "Declare war on [$name]" diff --git a/core/src/com/unciv/ui/trade/OffersListScroll.kt b/core/src/com/unciv/ui/trade/OffersListScroll.kt index 9d35996503..14861e62ab 100644 --- a/core/src/com/unciv/ui/trade/OffersListScroll.kt +++ b/core/src/com/unciv/ui/trade/OffersListScroll.kt @@ -104,7 +104,8 @@ class OffersListScroll( val amountPerClick = if (offer.type == Gold) 50 else 1 - if (offer.amount > 0 && offer.name != Constants.peaceTreaty && // can't disable peace treaty! + + if (offer.isTradable() && offer.name != Constants.peaceTreaty && // can't disable peace treaty! offer.name != Constants.researchAgreement) { // highlight unique suggestions