From bda375f44108d49c20abba8de37f2f7185f65fa8 Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Wed, 24 Apr 2019 12:15:30 +0300 Subject: [PATCH] Declaring war now cancels all prior trade agreements --- .../civilization/diplomacy/DiplomacyManager.kt | 15 +++++++++++++++ core/src/com/unciv/logic/trade/TradeOffer.kt | 5 +++-- core/src/com/unciv/ui/EmpireOverviewScreen.kt | 3 +-- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/core/src/com/unciv/logic/civilization/diplomacy/DiplomacyManager.kt b/core/src/com/unciv/logic/civilization/diplomacy/DiplomacyManager.kt index aa2aaf59d9..d8d5616f56 100644 --- a/core/src/com/unciv/logic/civilization/diplomacy/DiplomacyManager.kt +++ b/core/src/com/unciv/logic/civilization/diplomacy/DiplomacyManager.kt @@ -136,6 +136,21 @@ class DiplomacyManager() { fun declareWar(){ diplomaticStatus = DiplomaticStatus.War val otherCiv = otherCiv() + val otherCivDiplomacy = otherCiv.getDiplomacyManager(civInfo) + + // Cancel all trades. + for(trade in trades) + for(offer in trade.theirOffers.filter { it.duration>0 }) + civInfo.addNotification("["+offer.name+"] from [$otherCivName] has ended",null, Color.GOLD) + trades.clear() + updateHasOpenBorders() + + for(trade in otherCivDiplomacy.trades) + for(offer in trade.theirOffers.filter { it.duration>0 }) + otherCiv.addNotification("["+offer.name+"] from [$otherCivName] has ended",null, Color.GOLD) + otherCivDiplomacy.trades.clear() + otherCivDiplomacy.updateHasOpenBorders() + otherCiv.getDiplomacyManager(civInfo).diplomaticStatus = DiplomaticStatus.War otherCiv.addNotification("[${civInfo.civName}] has declared war on us!",null, Color.RED) diff --git a/core/src/com/unciv/logic/trade/TradeOffer.kt b/core/src/com/unciv/logic/trade/TradeOffer.kt index f872ea97ef..8ee4d98601 100644 --- a/core/src/com/unciv/logic/trade/TradeOffer.kt +++ b/core/src/com/unciv/logic/trade/TradeOffer.kt @@ -2,7 +2,8 @@ package com.unciv.logic.trade import com.unciv.models.gamebasics.tr -data class TradeOffer(var name:String, var type: TradeType, var duration:Int, var amount:Int=1) { +data class TradeOffer(var name:String, var type: TradeType, + /** 0 for offers that are immediate (e.g. gold transfer) */ var duration:Int, var amount:Int=1) { constructor() : this("", TradeType.Gold,0,0) // so that the json deserializer can work @@ -16,7 +17,7 @@ data class TradeOffer(var name:String, var type: TradeType, var duration:Int, va fun getOfferText(): String { var offerText = name.tr() if (type !in tradesToNotHaveNumbers) offerText += " (" + amount + ")" - if (duration > 1) offerText += "\n" + duration + " {turns}".tr() + if (duration > 0) offerText += "\n" + duration + " {turns}".tr() return offerText } diff --git a/core/src/com/unciv/ui/EmpireOverviewScreen.kt b/core/src/com/unciv/ui/EmpireOverviewScreen.kt index 3151634e78..5e64a529c0 100644 --- a/core/src/com/unciv/ui/EmpireOverviewScreen.kt +++ b/core/src/com/unciv/ui/EmpireOverviewScreen.kt @@ -112,8 +112,7 @@ class EmpireOverviewScreen : CameraStageBaseScreen(){ table.add(civ.civName.toLabel().setFontColor(civ.getNation().getSecondaryColor())).row() table.addSeparator() for(offer in offersList){ - var offerText = offer.amount.toString()+" "+offer.name.tr() - if(offer.duration>0)offerText += " ("+offer.duration+" {turns})".tr() + val offerText = offer.getOfferText() table.add(offerText.toLabel().setFontColor(civ.getNation().getSecondaryColor())).row() } for(i in 1..numberOfOtherSidesOffers - offersList.size)