From e8bdb8a2e4f8dc246c14146a56aaec37db721107 Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Wed, 5 Jun 2019 23:21:17 +0300 Subject: [PATCH] Added initial logic for promising not to settle cities near other civs - not yet activated --- .../Translations/Diplomacy,Trade,Nations.json | 2 ++ android/build.gradle | 4 ++-- .../unciv/logic/automation/NextTurnAutomation.kt | 16 ++++++++++++++++ .../com/unciv/logic/civilization/PopupAlert.kt | 4 +++- .../civilization/diplomacy/DiplomacyManager.kt | 11 ++++++----- core/src/com/unciv/ui/worldscreen/AlertPopup.kt | 1 + 6 files changed, 30 insertions(+), 8 deletions(-) diff --git a/android/assets/jsons/Translations/Diplomacy,Trade,Nations.json b/android/assets/jsons/Translations/Diplomacy,Trade,Nations.json index 558346e4d4..795de3b930 100644 --- a/android/assets/jsons/Translations/Diplomacy,Trade,Nations.json +++ b/android/assets/jsons/Translations/Diplomacy,Trade,Nations.json @@ -358,6 +358,8 @@ French:"Vous avez dénoncé nos ennemies" } + "You betrayed your promise to not settle cities near us":{} + ////// Trade diff --git a/android/build.gradle b/android/build.gradle index b291734a9f..fac616072d 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -21,8 +21,8 @@ android { applicationId "com.unciv.app" minSdkVersion 14 targetSdkVersion 28 - versionCode 253 - versionName "2.17.2-patch1" + versionCode 254 + versionName "2.17.3" } // Had to add this crap for Travis to build, it wanted to sign the app diff --git a/core/src/com/unciv/logic/automation/NextTurnAutomation.kt b/core/src/com/unciv/logic/automation/NextTurnAutomation.kt index 5b2142394f..1054d712cc 100644 --- a/core/src/com/unciv/logic/automation/NextTurnAutomation.kt +++ b/core/src/com/unciv/logic/automation/NextTurnAutomation.kt @@ -1,8 +1,10 @@ package com.unciv.logic.automation import com.unciv.Constants +import com.unciv.logic.city.CityInfo import com.unciv.logic.civilization.* import com.unciv.logic.civilization.diplomacy.DiplomacyFlags +import com.unciv.logic.civilization.diplomacy.DiplomaticModifiers import com.unciv.logic.civilization.diplomacy.DiplomaticStatus import com.unciv.logic.civilization.diplomacy.RelationshipLevel import com.unciv.logic.map.MapUnit @@ -346,4 +348,18 @@ class NextTurnAutomation{ } } + + fun onCitySettledNearBorders(civInfo: CivilizationInfo, newCity: CityInfo){ + val diplomacyManager = civInfo.getDiplomacyManager(newCity.civInfo) + if(diplomacyManager.hasFlag(DiplomacyFlags.IgnoreThemSettlingNearUs)) return + if(diplomacyManager.hasFlag(DiplomacyFlags.AgreedToNotSettleNearUs)){ + newCity.civInfo.popupAlerts.add(PopupAlert(AlertType.CitySettledNearOtherCivDespiteOurPromise, civInfo.civName)) + diplomacyManager.setFlag(DiplomacyFlags.IgnoreThemSettlingNearUs,200) + diplomacyManager.setModifier(DiplomaticModifiers.BetrayedPromiseToNotSettleCitiesNearUs,-20f) + } + else{ + newCity.civInfo.popupAlerts.add(PopupAlert(AlertType.CitySettledNearOtherCiv, civInfo.civName)) + } + } + } diff --git a/core/src/com/unciv/logic/civilization/PopupAlert.kt b/core/src/com/unciv/logic/civilization/PopupAlert.kt index c4dafe23f9..74173690a8 100644 --- a/core/src/com/unciv/logic/civilization/PopupAlert.kt +++ b/core/src/com/unciv/logic/civilization/PopupAlert.kt @@ -5,7 +5,9 @@ enum class AlertType{ Defeated, FirstContact, CityConquered, - BorderConflict + BorderConflict, + CitySettledNearOtherCiv, + CitySettledNearOtherCivDespiteOurPromise, } class PopupAlert { diff --git a/core/src/com/unciv/logic/civilization/diplomacy/DiplomacyManager.kt b/core/src/com/unciv/logic/civilization/diplomacy/DiplomacyManager.kt index 1697b9d7de..4194db879f 100644 --- a/core/src/com/unciv/logic/civilization/diplomacy/DiplomacyManager.kt +++ b/core/src/com/unciv/logic/civilization/diplomacy/DiplomacyManager.kt @@ -28,7 +28,9 @@ enum class DiplomacyFlags{ DeclaredWar, DeclarationOfFriendship, Denunceation, - BorderConflict + BorderConflict, + AgreedToNotSettleNearUs, + IgnoreThemSettlingNearUs } enum class DiplomaticModifiers{ @@ -39,6 +41,7 @@ enum class DiplomaticModifiers{ BetrayedDeclarationOfFriendship, Denunciation, DenouncedOurAllies, + BetrayedPromiseToNotSettleCitiesNearUs, YearsOfPeace, SharedEnemy, @@ -141,7 +144,6 @@ class DiplomacyManager() { fun canDeclareWar() = (turnsToPeaceTreaty()==0 && diplomaticStatus != DiplomaticStatus.War) - fun goldPerTurn():Int{ var goldPerTurnForUs = 0 for(trade in trades) { @@ -338,9 +340,7 @@ class DiplomacyManager() { return diplomaticModifiers[modifier.name]!! } - fun removeModifier(modifier: DiplomaticModifiers) = - diplomaticModifiers.remove(modifier.name) - + fun removeModifier(modifier: DiplomaticModifiers) = diplomaticModifiers.remove(modifier.name) fun hasModifier(modifier: DiplomaticModifiers) = diplomaticModifiers.containsKey(modifier.name) /** @param amount always positive, so you don't need to think about it */ @@ -386,5 +386,6 @@ class DiplomacyManager() { } } } + //endregion } diff --git a/core/src/com/unciv/ui/worldscreen/AlertPopup.kt b/core/src/com/unciv/ui/worldscreen/AlertPopup.kt index 5be88925e5..cede34f65d 100644 --- a/core/src/com/unciv/ui/worldscreen/AlertPopup.kt +++ b/core/src/com/unciv/ui/worldscreen/AlertPopup.kt @@ -74,6 +74,7 @@ class AlertPopup(val worldScreen: WorldScreen, val popupAlert: PopupAlert): Popu responseTable.add(getCloseButton("Never!")) add(responseTable) } + } open() isOpen = true