From eaa765a619fc4c91d5ec58c2e4c21f822a147701 Mon Sep 17 00:00:00 2001 From: SomeTroglodyte <63000004+SomeTroglodyte@users.noreply.github.com> Date: Tue, 26 Oct 2021 11:16:06 +0200 Subject: [PATCH] doCitadelDamage minor optimization (#5565) --- core/src/com/unciv/logic/map/MapUnit.kt | 52 ++++++++++++------------- 1 file changed, 25 insertions(+), 27 deletions(-) diff --git a/core/src/com/unciv/logic/map/MapUnit.kt b/core/src/com/unciv/logic/map/MapUnit.kt index 30295ce5b6..ebfc280e39 100644 --- a/core/src/com/unciv/logic/map/MapUnit.kt +++ b/core/src/com/unciv/logic/map/MapUnit.kt @@ -1013,39 +1013,37 @@ class MapUnit { private fun doCitadelDamage() { // Check for Citadel damage - note: 'Damage does not stack with other Citadels' - val citadelTile = currentTile.neighbors + val (citadelTile, damage) = currentTile.neighbors .filter { - it.getOwner() != null + it.getOwner() != null && it.improvement != null - && civInfo.isAtWarWith(it.getOwner()!!) - && it.getTileImprovement()!!.hasUnique(UniqueType.DamagesAdjacentEnemyUnits) - }.maxByOrNull { tile -> - tile.getTileImprovement()!! + && civInfo.isAtWarWith(it.getOwner()!!) + }.map { tile -> + tile to tile.getTileImprovement()!! .getMatchingUniques(UniqueType.DamagesAdjacentEnemyUnits) .sumOf { it.params[0].toInt() } - } - - if (citadelTile != null) { - health -= citadelTile.getTileImprovement()!!.getMatchingUniques(UniqueType.DamagesAdjacentEnemyUnits).sumOf { it.params[0].toInt() } - val locations = LocationAction(listOf(citadelTile.position, currentTile.position)) - if (health <= 0) { - civInfo.addNotification( - "An enemy [Citadel] has destroyed our [$name]", - locations, - NotificationIcon.Citadel, NotificationIcon.Death, name - ) - citadelTile.getOwner()?.addNotification( - "Your [Citadel] has destroyed an enemy [$name]", - locations, - NotificationIcon.Citadel, NotificationIcon.Death, name - ) - destroy() - } else civInfo.addNotification( - "An enemy [Citadel] has attacked our [$name]", + }.maxByOrNull { it.second } + ?: return + if (damage == 0) return + health -= damage + val locations = LocationAction(listOf(citadelTile.position, currentTile.position)) + if (health <= 0) { + civInfo.addNotification( + "An enemy [Citadel] has destroyed our [$name]", locations, - NotificationIcon.Citadel, NotificationIcon.War, name + NotificationIcon.Citadel, NotificationIcon.Death, name ) - } + citadelTile.getOwner()?.addNotification( + "Your [Citadel] has destroyed an enemy [$name]", + locations, + NotificationIcon.Citadel, NotificationIcon.Death, name + ) + destroy() + } else civInfo.addNotification( + "An enemy [Citadel] has attacked our [$name]", + locations, + NotificationIcon.Citadel, NotificationIcon.War, name + ) } fun matchesFilter(filter: String): Boolean {