mirror of
https://github.com/yairm210/Unciv.git
synced 2025-07-25 07:09:16 +07:00
Civs now have unique responses for introduction, greeting, trade acceptance and refusal
This commit is contained in:
@ -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
|
||||
|
@ -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
|
||||
|
@ -2,5 +2,6 @@ package com.unciv.logic.civilization.diplomacy
|
||||
|
||||
enum class DiplomaticIncidentType{
|
||||
WarDeclaration,
|
||||
Defeated
|
||||
Defeated,
|
||||
FirstContact
|
||||
}
|
@ -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
|
||||
|
@ -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())
|
||||
}
|
||||
|
||||
}
|
@ -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
|
||||
|
Reference in New Issue
Block a user