From 07881410542d4ba289c3d2a827f1977792f53f5f Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Mon, 11 Feb 2019 20:46:49 +0200 Subject: [PATCH] Civs now have unique responses for introduction, greeting, trade acceptance and refusal --- android/build.gradle | 2 +- .../logic/civilization/CivilizationInfo.kt | 17 ++++++++++++----- .../diplomacy/DiplomaticIncidentType.kt | 3 ++- core/src/com/unciv/models/gamebasics/Nation.kt | 5 +++++ core/src/com/unciv/ui/trade/TradeTable.kt | 12 ++++++------ .../src/com/unciv/ui/worldscreen/WorldScreen.kt | 4 ++++ 6 files changed, 30 insertions(+), 13 deletions(-) diff --git a/android/build.gradle b/android/build.gradle index 5873477ad1..c25e4f48f4 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -22,7 +22,7 @@ android { minSdkVersion 14 targetSdkVersion 28 versionCode 201 - versionName "2.13.2" + versionName "2.13.3" } // Had to add this crap for Travis to build, it wanted to sign the app diff --git a/core/src/com/unciv/logic/civilization/CivilizationInfo.kt b/core/src/com/unciv/logic/civilization/CivilizationInfo.kt index f59a80ddde..5019155442 100644 --- a/core/src/com/unciv/logic/civilization/CivilizationInfo.kt +++ b/core/src/com/unciv/logic/civilization/CivilizationInfo.kt @@ -6,6 +6,7 @@ import com.unciv.logic.GameInfo import com.unciv.logic.city.CityInfo import com.unciv.logic.civilization.diplomacy.DiplomacyManager import com.unciv.logic.civilization.diplomacy.DiplomaticIncident +import com.unciv.logic.civilization.diplomacy.DiplomaticIncidentType import com.unciv.logic.civilization.diplomacy.DiplomaticStatus import com.unciv.logic.map.BFS import com.unciv.logic.map.MapUnit @@ -265,18 +266,24 @@ class CivilizationInfo { for(unit in tile.getUnits()) viewedCivs+=unit.civInfo } - for(otherCiv in viewedCivs.filterNot { it==this || it.isBarbarianCivilization() }) - if(!diplomacy.containsKey(otherCiv.civName)){ - meetCivilization(otherCiv) - addNotification("We have encountered [${otherCiv.civName}]!".tr(),null, Color.GOLD) - } + if(!isBarbarianCivilization()) { + for (otherCiv in viewedCivs.filterNot { it == this || it.isBarbarianCivilization() }) + if (!diplomacy.containsKey(otherCiv.civName)) { + meetCivilization(otherCiv) + addNotification("We have encountered [${otherCiv.civName}]!".tr(), null, Color.GOLD) + } + } } fun meetCivilization(otherCiv: CivilizationInfo) { diplomacy[otherCiv.civName] = DiplomacyManager(this, otherCiv.civName) .apply { diplomaticStatus = DiplomaticStatus.Peace } + otherCiv.diplomaticIncidents.add(DiplomaticIncident(civName, DiplomaticIncidentType.FirstContact)) + otherCiv.diplomacy[civName] = DiplomacyManager(otherCiv, civName) .apply { diplomaticStatus = DiplomaticStatus.Peace } + + diplomaticIncidents.add(DiplomaticIncident(otherCiv.civName, DiplomaticIncidentType.FirstContact)) } override fun toString(): String {return civName} // for debug diff --git a/core/src/com/unciv/logic/civilization/diplomacy/DiplomaticIncidentType.kt b/core/src/com/unciv/logic/civilization/diplomacy/DiplomaticIncidentType.kt index 667dec67f7..e1a0f60fd8 100644 --- a/core/src/com/unciv/logic/civilization/diplomacy/DiplomaticIncidentType.kt +++ b/core/src/com/unciv/logic/civilization/diplomacy/DiplomaticIncidentType.kt @@ -2,5 +2,6 @@ package com.unciv.logic.civilization.diplomacy enum class DiplomaticIncidentType{ WarDeclaration, - Defeated + Defeated, + FirstContact } \ No newline at end of file diff --git a/core/src/com/unciv/models/gamebasics/Nation.kt b/core/src/com/unciv/models/gamebasics/Nation.kt index 898ab32ad3..2207428359 100644 --- a/core/src/com/unciv/models/gamebasics/Nation.kt +++ b/core/src/com/unciv/models/gamebasics/Nation.kt @@ -11,6 +11,11 @@ class Nation : INamed { lateinit var declaringWar:String lateinit var attacked:String lateinit var defeated:String + lateinit var introduction:String + + var neutralLetsHearIt = ArrayList() + var neutralYes = ArrayList() + var neutralNo = ArrayList() lateinit var mainColor: List var unique:String?=null diff --git a/core/src/com/unciv/ui/trade/TradeTable.kt b/core/src/com/unciv/ui/trade/TradeTable.kt index 5998a43fa6..bfc6a39156 100644 --- a/core/src/com/unciv/ui/trade/TradeTable.kt +++ b/core/src/com/unciv/ui/trade/TradeTable.kt @@ -15,7 +15,7 @@ class TradeTable(val otherCivilization: CivilizationInfo, stage: Stage, onTradeC var tradeLogic = TradeLogic(currentPlayerCiv,otherCivilization) var offerColumnsTable = OfferColumnsTable(tradeLogic, stage) { onChange() } var offerColumnsTableWrapper = Table() // This is so that after a trade has been traded, we can switch out the offers to start anew - this is the easiest way - val tradeText = Label("What do you have in mind?".tr(), CameraStageBaseScreen.skin) + val tradeText = Label(otherCivilization.getNation().neutralLetsHearIt.random().tr(), CameraStageBaseScreen.skin) val offerButton = TextButton("Offer trade".tr(), CameraStageBaseScreen.skin) @@ -30,14 +30,14 @@ class TradeTable(val otherCivilization: CivilizationInfo, stage: Stage, onTradeC offerButton.onClick { if(offerButton.text.toString() == "Offer trade".tr()) { if(tradeLogic.currentTrade.theirOffers.size==0 && tradeLogic.currentTrade.ourOffers.size==0){ - tradeText.setText("There's nothing on the table.".tr()) + tradeText.setText(otherCivilization.getNation().neutralLetsHearIt.random().tr()) } else if (tradeLogic.isTradeAcceptable()){ - tradeText.setText("That is acceptable.".tr()) + tradeText.setText(otherCivilization.getNation().neutralYes.random().tr()) offerButton.setText("Accept".tr()) } else{ - tradeText.setText("I think not.".tr()) + tradeText.setText(otherCivilization.getNation().neutralNo.random().tr()) } } else if(offerButton.text.toString() == "Accept".tr()){ @@ -48,7 +48,7 @@ class TradeTable(val otherCivilization: CivilizationInfo, stage: Stage, onTradeC offerColumnsTableWrapper.add(offerColumnsTable) tradeText.setText("Pleasure doing business with you!".tr()) onTradeComplete() - tradeText.setText("Offer trade".tr()) + offerButton.setText("Offer trade".tr()) } } @@ -63,7 +63,7 @@ class TradeTable(val otherCivilization: CivilizationInfo, stage: Stage, onTradeC private fun onChange(){ offerColumnsTable.update() offerButton.setText("Offer trade".tr()) - tradeText.setText("What do you have in mind?".tr()) + tradeText.setText(otherCivilization.getNation().neutralLetsHearIt.random().tr()) } } \ No newline at end of file diff --git a/core/src/com/unciv/ui/worldscreen/WorldScreen.kt b/core/src/com/unciv/ui/worldscreen/WorldScreen.kt index 44a68298a6..136fd7e8a5 100644 --- a/core/src/com/unciv/ui/worldscreen/WorldScreen.kt +++ b/core/src/com/unciv/ui/worldscreen/WorldScreen.kt @@ -335,6 +335,10 @@ class DiplomaticIncidentPopup(val worldScreen: WorldScreen, val diplomaticIncide addGoodSizedLabel(otherCiv.getNation().defeated).row() add(getCloseButton("Farewell.")) } + DiplomaticIncidentType.FirstContact -> { + addGoodSizedLabel(otherCiv.getNation().introduction).row() + add(getCloseButton("A pleasure to meet you.")) + } } open() isOpen = true