From 333b1b194f20e2e4cfc38b8abde2afb676b2ddc4 Mon Sep 17 00:00:00 2001 From: yairm210 Date: Sun, 8 Sep 2024 01:11:29 +0300 Subject: [PATCH] perf: Don't update city stats at *end turn* when unassigning extra population (won't affect anything until next turn where we'll recalc anyway) --- core/src/com/unciv/logic/city/City.kt | 3 +-- .../src/com/unciv/logic/city/managers/CityPopulationManager.kt | 3 +-- core/src/com/unciv/logic/civilization/Civilization.kt | 2 +- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/core/src/com/unciv/logic/city/City.kt b/core/src/com/unciv/logic/city/City.kt index 5b2d6c8c92..5d16ece9d9 100644 --- a/core/src/com/unciv/logic/city/City.kt +++ b/core/src/com/unciv/logic/city/City.kt @@ -411,8 +411,7 @@ class City : IsPartOfGameInfoSerialization, INamed { hasSoldBuildingThisTurn = true population.unassignExtraPopulation() // If the building provided specialists, release them to other work - population.autoAssignPopulation() - cityStats.update() + population.autoAssignPopulation() // also updates city stats civ.cache.updateCivResources() // this building could be a resource-requiring one } diff --git a/core/src/com/unciv/logic/city/managers/CityPopulationManager.kt b/core/src/com/unciv/logic/city/managers/CityPopulationManager.kt index ab3f5d90f3..ed3356d068 100644 --- a/core/src/com/unciv/logic/city/managers/CityPopulationManager.kt +++ b/core/src/com/unciv/logic/city/managers/CityPopulationManager.kt @@ -131,6 +131,7 @@ class CityPopulationManager : IsPartOfGameInfoSerialization { val freePopulation = getFreePopulation() if (freePopulation < 0) { unassignExtraPopulation() + city.cityStats.update() } else { autoAssignPopulation() } @@ -267,8 +268,6 @@ class CityPopulationManager : IsPartOfGameInfoSerialization { } } } - - city.cityStats.update() } fun getMaxSpecialists(): Counter { diff --git a/core/src/com/unciv/logic/civilization/Civilization.kt b/core/src/com/unciv/logic/civilization/Civilization.kt index 5fa1d6608d..615587c27d 100644 --- a/core/src/com/unciv/logic/civilization/Civilization.kt +++ b/core/src/com/unciv/logic/civilization/Civilization.kt @@ -536,7 +536,7 @@ class Civilization : IsPartOfGameInfoSerialization { yieldAll(religionManager.religion!!.founderBeliefUniqueMap.getMatchingUniques(uniqueType, stateForConditionals)) yieldAll(getCivResourceSupply().asSequence() - .filter { it.amount > 0 } + .filter { it.amount > 0 && it.resource.uniques.isNotEmpty() } .flatMap { it.resource.getMatchingUniques(uniqueType, stateForConditionals) } )