From cb867f0066413846941259119e24c949d43aead1 Mon Sep 17 00:00:00 2001 From: Duan Tao Date: Tue, 7 May 2019 19:06:51 +0800 Subject: [PATCH] Code improvement for city state border conflict. --- .../logic/automation/NextTurnAutomation.kt | 29 +++++-------------- 1 file changed, 8 insertions(+), 21 deletions(-) diff --git a/core/src/com/unciv/logic/automation/NextTurnAutomation.kt b/core/src/com/unciv/logic/automation/NextTurnAutomation.kt index 2baee4a7ed..1bdc43f876 100644 --- a/core/src/com/unciv/logic/automation/NextTurnAutomation.kt +++ b/core/src/com/unciv/logic/automation/NextTurnAutomation.kt @@ -245,28 +245,15 @@ class NextTurnAutomation{ private fun updateDiplomaticRelationship(civInfo: CivilizationInfo) { // Check if city-state invaded by other civs if (civInfo.isCityState()) { - var militaryUnitsInBorder = HashMap() - for (city in civInfo.cities) { - for (tile in city.getTiles()) { - val troop = tile.militaryUnit - if (troop != null && troop.owner != civInfo.civName) { - if (militaryUnitsInBorder.containsKey(troop.owner)) { - militaryUnitsInBorder[troop.owner] = militaryUnitsInBorder[troop.owner]!! + 1 - } else { - militaryUnitsInBorder[troop.owner] = 1 - } - } - } - } + for (civ in civInfo.gameInfo.civilizations) { + if (civ == civInfo || civ.isBarbarianCivilization()) continue + val diplomacy = civInfo.getDiplomacyManager(civ)!! + if (diplomacy.diplomaticStatus == DiplomaticStatus.War) continue - for (otherCivName in militaryUnitsInBorder.filter { it.value > 0 }.keys) { - val otherCiv = civInfo.gameInfo.getCivilization(otherCivName) - if (!otherCiv.isBarbarianCivilization()) { - val diplo = civInfo.getDiplomacyManager(otherCiv) - if (diplo.diplomaticStatus != DiplomaticStatus.War) { - diplo.influence -= 10f - otherCiv.popupAlerts.add(PopupAlert(AlertType.BorderConflict,civInfo.civName)) - } + val unitsInBorder = civ.getCivUnits().count { !it.type.isCivilian() && it.getTile().getOwner() == civInfo } + if (unitsInBorder > 0 && diplomacy.influence < 30f) { + diplomacy.influence -= 10f + civ.popupAlerts.add(PopupAlert(AlertType.BorderConflict,civInfo.civName)) } } }