diff --git a/core/src/com/unciv/logic/city/CityExpansionManager.kt b/core/src/com/unciv/logic/city/CityExpansionManager.kt index 1d5c95a095..c3f132e99f 100644 --- a/core/src/com/unciv/logic/city/CityExpansionManager.kt +++ b/core/src/com/unciv/logic/city/CityExpansionManager.kt @@ -144,7 +144,7 @@ class CityExpansionManager { city.lockedTiles.remove(tileInfo.position) } - tileInfo.owningCity = null + tileInfo.setOwningCity(null) cityInfo.civInfo.updateDetailedCivResources() cityInfo.cityStats.update() @@ -164,7 +164,7 @@ class CityExpansionManager { tileInfo.getCity()!!.expansion.relinquishOwnership(tileInfo) cityInfo.tiles = cityInfo.tiles.withItem(tileInfo.position) - tileInfo.owningCity = cityInfo + tileInfo.setOwningCity(cityInfo) cityInfo.population.autoAssignPopulation() cityInfo.civInfo.updateDetailedCivResources() cityInfo.cityStats.update() @@ -190,7 +190,7 @@ class CityExpansionManager { fun setTransients() { val tiles = cityInfo.getTiles() for (tile in tiles) - tile.owningCity = cityInfo + tile.setOwningCity(cityInfo) } //endregion } diff --git a/core/src/com/unciv/logic/map/TileInfo.kt b/core/src/com/unciv/logic/map/TileInfo.kt index b9b38c7db0..f10d6d77dc 100644 --- a/core/src/com/unciv/logic/map/TileInfo.kt +++ b/core/src/com/unciv/logic/map/TileInfo.kt @@ -26,8 +26,17 @@ open class TileInfo { @Transient lateinit var ruleset: Ruleset // a tile can be a tile with a ruleset, even without a map. + @Transient + private var isCityCenterInternal = false + @Transient var owningCity: CityInfo? = null + private set + + fun setOwningCity(city:CityInfo?){ + owningCity = city + isCityCenterInternal = getCity()?.location == position + } @Transient private lateinit var baseTerrainObject: Terrain @@ -156,7 +165,7 @@ open class TileInfo { if (naturalWonder == null) throw Exception("No natural wonder exists for this tile!") else ruleset.terrains[naturalWonder!!]!! - fun isCityCenter(): Boolean = getCity()?.location == position + fun isCityCenter(): Boolean = isCityCenterInternal fun isNaturalWonder(): Boolean = naturalWonder != null fun isImpassible() = getLastTerrain().impassable diff --git a/tests/src/com/unciv/logic/map/TileImprovementConstructionTests.kt b/tests/src/com/unciv/logic/map/TileImprovementConstructionTests.kt index 00964d7090..05157b59de 100644 --- a/tests/src/com/unciv/logic/map/TileImprovementConstructionTests.kt +++ b/tests/src/com/unciv/logic/map/TileImprovementConstructionTests.kt @@ -23,8 +23,8 @@ class TileImprovementConstructionTests { private fun getTile() = TileInfo().apply { baseTerrain = "Plains" ruleset = ruleSet - owningCity = city position = Vector2(1f, 1f) // so that it's not on the same position as the city + setOwningCity(city) this@apply.tileMap = this@TileImprovementConstructionTests.tileMap } diff --git a/tests/src/com/unciv/logic/map/UnitMovementAlgorithmsTests.kt b/tests/src/com/unciv/logic/map/UnitMovementAlgorithmsTests.kt index 243524ebcb..dba93a1968 100644 --- a/tests/src/com/unciv/logic/map/UnitMovementAlgorithmsTests.kt +++ b/tests/src/com/unciv/logic/map/UnitMovementAlgorithmsTests.kt @@ -82,7 +82,7 @@ class UnitMovementAlgorithmsTests { val city = CityInfo() city.location = cityTile.position city.civInfo = civInfo - cityTile.owningCity = city + cityTile.setOwningCity(city) for (type in ruleSet.unitTypes) { @@ -248,7 +248,7 @@ class UnitMovementAlgorithmsTests { val city = CityInfo() city.location = tile.position.cpy().add(1f,1f) city.civInfo = otherCiv - tile.owningCity = city + tile.setOwningCity(city) unit.baseUnit = BaseUnit().apply { unitType = ruleSet.unitTypes.keys.first(); ruleset = ruleSet } unit.owner = civInfo.civName