From 0a336b3d993ecc858123593fa95c041082768fd1 Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Tue, 1 Feb 2022 12:14:37 +0200 Subject: [PATCH] Summarized civ resources, which were getting accessed all the time, are now cached and updated together with the detailed civ resources. (#6093) --- .../logic/civilization/CivInfoTransientUpdater.kt | 9 ++++++++- .../unciv/logic/civilization/CivilizationInfo.kt | 13 +++++-------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/core/src/com/unciv/logic/civilization/CivInfoTransientUpdater.kt b/core/src/com/unciv/logic/civilization/CivInfoTransientUpdater.kt index cc8ff0cf2d..1e2b4759e1 100644 --- a/core/src/com/unciv/logic/civilization/CivInfoTransientUpdater.kt +++ b/core/src/com/unciv/logic/civilization/CivInfoTransientUpdater.kt @@ -164,7 +164,7 @@ class CivInfoTransientUpdater(val civInfo: CivilizationInfo) { civInfo.citiesConnectedToCapitalToMediums = citiesReachedToMediums } - fun updateDetailedCivResources() { + fun updateCivResources() { val newDetailedCivResources = ResourceSupplyList() for (city in civInfo.cities) newDetailedCivResources.add(city.getCityResources()) @@ -192,6 +192,13 @@ class CivInfoTransientUpdater(val civInfo: CivilizationInfo) { for ((resource, amount) in unit.baseUnit.getResourceRequirements()) newDetailedCivResources.add(civInfo.gameInfo.ruleSet.tileResources[resource]!!, -amount, "Units") civInfo.detailedCivResources = newDetailedCivResources + + val newSummarizedCivResources = ResourceSupplyList() + for (resourceSupply in newDetailedCivResources) { + newSummarizedCivResources.add(resourceSupply.resource, resourceSupply.amount, "All") + } + civInfo.summarizedCivResources = newSummarizedCivResources + civInfo.updateStatsForNextTurn() // More or less resources = more or less happiness, with potential domino effects } } \ No newline at end of file diff --git a/core/src/com/unciv/logic/civilization/CivilizationInfo.kt b/core/src/com/unciv/logic/civilization/CivilizationInfo.kt index 05b955370a..fdcfd12006 100644 --- a/core/src/com/unciv/logic/civilization/CivilizationInfo.kt +++ b/core/src/com/unciv/logic/civilization/CivilizationInfo.kt @@ -97,6 +97,9 @@ class CivilizationInfo { @Transient var detailedCivResources = ResourceSupplyList() + @Transient + var summarizedCivResources = ResourceSupplyList() + @Transient val cityStateFunctions = CityStateFunctions(this) @@ -324,13 +327,7 @@ class CivilizationInfo { fun getHappiness() = happinessForNextTurn - fun getCivResources(): ResourceSupplyList { - val newResourceSupplyList = ResourceSupplyList() - for (resourceSupply in detailedCivResources) { - newResourceSupplyList.add(resourceSupply.resource, resourceSupply.amount, "All") - } - return newResourceSupplyList - } + fun getCivResources(): ResourceSupplyList = summarizedCivResources // Preserves some origins for resources so we can separate them for trades fun getCivResourcesWithOriginsForTrade(): ResourceSupplyList { @@ -799,7 +796,7 @@ class CivilizationInfo { fun initialSetCitiesConnectedToCapitalTransients() = transients().updateCitiesConnectedToCapital(true) fun updateHasActiveGreatWall() = transients().updateHasActiveGreatWall() fun updateViewableTiles() = transients().updateViewableTiles() - fun updateDetailedCivResources() = transients().updateDetailedCivResources() + fun updateDetailedCivResources() = transients().updateCivResources() fun startTurn() { civConstructions.startTurn()