Resolved #2979 - Display countdown to negotiate peace in diplomacy screen

This commit is contained in:
Yair Morgenstern 2020-08-25 10:18:05 +03:00
parent 6d7903eb93
commit 0c1e318334
3 changed files with 10 additions and 3 deletions

View file

@ -489,6 +489,7 @@ class DiplomacyManager() {
fun hasFlag(flag:DiplomacyFlags) = flagsCountdown.containsKey(flag.name) fun hasFlag(flag:DiplomacyFlags) = flagsCountdown.containsKey(flag.name)
fun setFlag(flag: DiplomacyFlags, amount: Int){ flagsCountdown[flag.name]=amount} fun setFlag(flag: DiplomacyFlags, amount: Int){ flagsCountdown[flag.name]=amount}
fun getFlag(flag: DiplomacyFlags) = flagsCountdown[flag.name]!!
fun removeFlag(flag: DiplomacyFlags){ flagsCountdown.remove(flag.name)} fun removeFlag(flag: DiplomacyFlags){ flagsCountdown.remove(flag.name)}
fun addModifier(modifier: DiplomaticModifiers, amount:Float){ fun addModifier(modifier: DiplomaticModifiers, amount:Float){

View file

@ -4,6 +4,7 @@ import com.unciv.Constants
import com.unciv.UncivGame import com.unciv.UncivGame
import com.unciv.models.metadata.GameSpeed import com.unciv.models.metadata.GameSpeed
import com.unciv.models.translations.tr import com.unciv.models.translations.tr
import com.unciv.ui.utils.Fonts
data class TradeOffer(var name:String, var type: TradeType, var amount:Int=1, var duration:Int=-1) { data class TradeOffer(var name:String, var type: TradeType, var amount:Int=1, var duration:Int=-1) {
@ -33,7 +34,7 @@ data class TradeOffer(var name:String, var type: TradeType, var amount:Int=1, va
else -> name else -> name
}.tr() }.tr()
if (type !in tradesToNotHaveNumbers || name=="Research Agreement") offerText += " ($amount)" if (type !in tradesToNotHaveNumbers || name=="Research Agreement") offerText += " ($amount)"
if (duration > 0) offerText += "\n" + duration + " {turns}".tr() if (duration > 0) offerText += "\n" + duration + Fonts.turn
return offerText return offerText
} }

View file

@ -209,8 +209,13 @@ class DiplomacyScreen(val viewingCiv:CivilizationInfo):CameraStageBaseScreen() {
tradeTable.tradeLogic.currentTrade.ourOffers.add(peaceTreaty) tradeTable.tradeLogic.currentTrade.ourOffers.add(peaceTreaty)
tradeTable.offerColumnsTable.update() tradeTable.offerColumnsTable.update()
} }
if (isNotPlayersTurn() || otherCivDiplomacyManager.hasFlag(DiplomacyFlags.DeclaredWar)) if (isNotPlayersTurn() || otherCivDiplomacyManager.hasFlag(DiplomacyFlags.DeclaredWar)) {
negotiatePeaceButton.disable() // Can't trade for 10 turns after war was declared negotiatePeaceButton.disable() // Can't trade for 10 turns after war was declared
if (otherCivDiplomacyManager.hasFlag(DiplomacyFlags.DeclaredWar)) {
val turnsLeft = otherCivDiplomacyManager.getFlag(DiplomacyFlags.DeclaredWar)
negotiatePeaceButton.setText(negotiatePeaceButton.text.toString() + "\n$turnsLeft" + Fonts.turn)
}
}
diplomacyTable.add(negotiatePeaceButton).row() diplomacyTable.add(negotiatePeaceButton).row()
} }
@ -365,7 +370,7 @@ class DiplomacyScreen(val viewingCiv:CivilizationInfo):CameraStageBaseScreen() {
val turnsToPeaceTreaty = diplomacyManager.turnsToPeaceTreaty() val turnsToPeaceTreaty = diplomacyManager.turnsToPeaceTreaty()
if (turnsToPeaceTreaty > 0) { if (turnsToPeaceTreaty > 0) {
declareWarButton.disable() declareWarButton.disable()
declareWarButton.setText(declareWarButton.text.toString() + " ($turnsToPeaceTreaty)") declareWarButton.setText(declareWarButton.text.toString() + " ($turnsToPeaceTreaty${Fonts.turn})")
} }
declareWarButton.onClick { declareWarButton.onClick {
YesNoPopup("Declare war on [${otherCiv.civName}]?".tr(), { YesNoPopup("Declare war on [${otherCiv.civName}]?".tr(), {