From 82481162c843931fbc64b5b41981abf2c60bd58f Mon Sep 17 00:00:00 2001 From: yairm210 Date: Mon, 4 Nov 2024 14:58:43 +0200 Subject: [PATCH] perf: 'getWorkingCity' optimization --- core/src/com/unciv/logic/map/tile/Tile.kt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/core/src/com/unciv/logic/map/tile/Tile.kt b/core/src/com/unciv/logic/map/tile/Tile.kt index d600ece540..a8e54ba5ca 100644 --- a/core/src/com/unciv/logic/map/tile/Tile.kt +++ b/core/src/com/unciv/logic/map/tile/Tile.kt @@ -390,7 +390,8 @@ class Tile : IsPartOfGameInfoSerialization, Json.Serializable { fun getWorkingCity(): City? { val civInfo = getOwner() ?: return null - return civInfo.cities.firstOrNull { it.isWorked(this) } + if (owningCity?.isWorked(this) == true) return owningCity // common case + return civInfo.cities.firstOrNull { it != owningCity && it.isWorked(this) } } fun isBlockaded(): Boolean { @@ -422,7 +423,8 @@ class Tile : IsPartOfGameInfoSerialization, Json.Serializable { fun isWorked(): Boolean = getWorkingCity() != null fun providesYield(): Boolean { if (getCity() == null) return false - return isCityCenter() || isWorked() + return isCityCenter() + || isWorked() || getUnpillagedTileImprovement()?.hasUnique(UniqueType.TileProvidesYieldWithoutPopulation) == true || terrainHasUnique(UniqueType.TileProvidesYieldWithoutPopulation) }