Summarized civ resources, which were getting accessed all the time, are now cached and updated together with the detailed civ resources. (#6093)

This commit is contained in:
Yair Morgenstern
2022-02-01 12:14:37 +02:00
committed by GitHub
parent cf6dacdcbe
commit 0a336b3d99
2 changed files with 13 additions and 9 deletions

View File

@ -164,7 +164,7 @@ class CivInfoTransientUpdater(val civInfo: CivilizationInfo) {
civInfo.citiesConnectedToCapitalToMediums = citiesReachedToMediums civInfo.citiesConnectedToCapitalToMediums = citiesReachedToMediums
} }
fun updateDetailedCivResources() { fun updateCivResources() {
val newDetailedCivResources = ResourceSupplyList() val newDetailedCivResources = ResourceSupplyList()
for (city in civInfo.cities) newDetailedCivResources.add(city.getCityResources()) 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()) for ((resource, amount) in unit.baseUnit.getResourceRequirements())
newDetailedCivResources.add(civInfo.gameInfo.ruleSet.tileResources[resource]!!, -amount, "Units") newDetailedCivResources.add(civInfo.gameInfo.ruleSet.tileResources[resource]!!, -amount, "Units")
civInfo.detailedCivResources = newDetailedCivResources 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 civInfo.updateStatsForNextTurn() // More or less resources = more or less happiness, with potential domino effects
} }
} }

View File

@ -97,6 +97,9 @@ class CivilizationInfo {
@Transient @Transient
var detailedCivResources = ResourceSupplyList() var detailedCivResources = ResourceSupplyList()
@Transient
var summarizedCivResources = ResourceSupplyList()
@Transient @Transient
val cityStateFunctions = CityStateFunctions(this) val cityStateFunctions = CityStateFunctions(this)
@ -324,13 +327,7 @@ class CivilizationInfo {
fun getHappiness() = happinessForNextTurn fun getHappiness() = happinessForNextTurn
fun getCivResources(): ResourceSupplyList { fun getCivResources(): ResourceSupplyList = summarizedCivResources
val newResourceSupplyList = ResourceSupplyList()
for (resourceSupply in detailedCivResources) {
newResourceSupplyList.add(resourceSupply.resource, resourceSupply.amount, "All")
}
return newResourceSupplyList
}
// Preserves some origins for resources so we can separate them for trades // Preserves some origins for resources so we can separate them for trades
fun getCivResourcesWithOriginsForTrade(): ResourceSupplyList { fun getCivResourcesWithOriginsForTrade(): ResourceSupplyList {
@ -799,7 +796,7 @@ class CivilizationInfo {
fun initialSetCitiesConnectedToCapitalTransients() = transients().updateCitiesConnectedToCapital(true) fun initialSetCitiesConnectedToCapitalTransients() = transients().updateCitiesConnectedToCapital(true)
fun updateHasActiveGreatWall() = transients().updateHasActiveGreatWall() fun updateHasActiveGreatWall() = transients().updateHasActiveGreatWall()
fun updateViewableTiles() = transients().updateViewableTiles() fun updateViewableTiles() = transients().updateViewableTiles()
fun updateDetailedCivResources() = transients().updateDetailedCivResources() fun updateDetailedCivResources() = transients().updateCivResources()
fun startTurn() { fun startTurn() {
civConstructions.startTurn() civConstructions.startTurn()