Civs now have unique responses for introduction, greeting, trade acceptance and refusal

This commit is contained in:
Yair Morgenstern
2019-02-11 20:46:49 +02:00
parent d080f37a94
commit 0788141054
6 changed files with 30 additions and 13 deletions

View File

@ -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

View File

@ -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

View File

@ -2,5 +2,6 @@ package com.unciv.logic.civilization.diplomacy
enum class DiplomaticIncidentType{
WarDeclaration,
Defeated
Defeated,
FirstContact
}

View File

@ -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<String>()
var neutralYes = ArrayList<String>()
var neutralNo = ArrayList<String>()
lateinit var mainColor: List<Int>
var unique:String?=null

View File

@ -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())
}
}

View File

@ -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