doCitadelDamage minor optimization (#5565)

This commit is contained in:
SomeTroglodyte 2021-10-26 11:16:06 +02:00 committed by GitHub
parent 693cf97849
commit eaa765a619
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1013,39 +1013,37 @@ class MapUnit {
private fun doCitadelDamage() { private fun doCitadelDamage() {
// Check for Citadel damage - note: 'Damage does not stack with other Citadels' // Check for Citadel damage - note: 'Damage does not stack with other Citadels'
val citadelTile = currentTile.neighbors val (citadelTile, damage) = currentTile.neighbors
.filter { .filter {
it.getOwner() != null it.getOwner() != null
&& it.improvement != null && it.improvement != null
&& civInfo.isAtWarWith(it.getOwner()!!) && civInfo.isAtWarWith(it.getOwner()!!)
&& it.getTileImprovement()!!.hasUnique(UniqueType.DamagesAdjacentEnemyUnits) }.map { tile ->
}.maxByOrNull { tile -> tile to tile.getTileImprovement()!!
tile.getTileImprovement()!!
.getMatchingUniques(UniqueType.DamagesAdjacentEnemyUnits) .getMatchingUniques(UniqueType.DamagesAdjacentEnemyUnits)
.sumOf { it.params[0].toInt() } .sumOf { it.params[0].toInt() }
} }.maxByOrNull { it.second }
?: return
if (citadelTile != null) { if (damage == 0) return
health -= citadelTile.getTileImprovement()!!.getMatchingUniques(UniqueType.DamagesAdjacentEnemyUnits).sumOf { it.params[0].toInt() } health -= damage
val locations = LocationAction(listOf(citadelTile.position, currentTile.position)) val locations = LocationAction(listOf(citadelTile.position, currentTile.position))
if (health <= 0) { if (health <= 0) {
civInfo.addNotification( civInfo.addNotification(
"An enemy [Citadel] has destroyed our [$name]", "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]",
locations, 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 { fun matchesFilter(filter: String): Boolean {