diff --git a/core/src/com/unciv/logic/civilization/CivInfoStats.kt b/core/src/com/unciv/logic/civilization/CivInfoStats.kt index 7e70b809a4..c4629e0050 100644 --- a/core/src/com/unciv/logic/civilization/CivInfoStats.kt +++ b/core/src/com/unciv/logic/civilization/CivInfoStats.kt @@ -89,16 +89,12 @@ class CivInfoStats(val civInfo: CivilizationInfo){ } } - for (entry in getHappinessBreakdown()) { - statMap.add(entry.key, Stats().apply { happiness=entry.value }) - } - statMap["Transportation upkeep"] = Stats().apply { gold=- getTransportationUpkeep().toFloat()} statMap["Unit upkeep"] = Stats().apply { gold=- getUnitUpkeep().toFloat()} if (civInfo.policies.hasEffect("50% of excess happiness added to culture towards policies")) { - val happiness = statMap.values.map { it.happiness }.sum() - if(happiness>0) statMap.add("Policies", Stats().apply { culture=happiness/2 }) + val happiness = civInfo.getHappiness() + if(happiness>0) statMap.add("Policies", Stats().apply { culture=happiness/2f }) } // negative gold hurts science @@ -127,7 +123,7 @@ class CivInfoStats(val civInfo: CivilizationInfo){ statMap["Luxury resources"]= civInfo.getCivResources().map { it.resource } .count { it.resourceType === ResourceType.Luxury } * happinessPerUniqueLuxury - for(city in civInfo.cities.toList()){ + for(city in civInfo.cities){ for(keyvalue in city.cityStats.happinessList){ if(statMap.containsKey(keyvalue.key)) statMap[keyvalue.key] = statMap[keyvalue.key]!!+keyvalue.value diff --git a/core/src/com/unciv/logic/civilization/CivilizationInfo.kt b/core/src/com/unciv/logic/civilization/CivilizationInfo.kt index 106a3667ea..d0f96b4264 100644 --- a/core/src/com/unciv/logic/civilization/CivilizationInfo.kt +++ b/core/src/com/unciv/logic/civilization/CivilizationInfo.kt @@ -50,6 +50,7 @@ class CivilizationInfo { /** This is for performance since every movement calculation depends on this, see MapUnit comment */ @Transient var hasActiveGreatWall = false @Transient var statsForNextTurn = Stats() + @Transient var happinessForNextTurn = 0 @Transient var detailedCivResources = ResourceSupplyList() var playerType = PlayerType.AI @@ -146,11 +147,12 @@ class CivilizationInfo { fun stats() = CivInfoStats(this) fun transients() = CivInfoTransientUpdater(this) - fun updateStatsForNextTurn(){ - statsForNextTurn = stats().getStatMapForNextTurn().values.toList().reduce{a,b->a+b} + fun updateStatsForNextTurn() { + happinessForNextTurn = stats().getHappinessBreakdown().values.sum().roundToInt() + statsForNextTurn = stats().getStatMapForNextTurn().values.reduce { a, b -> a + b } } - fun getHappiness() = stats().getHappinessBreakdown().values.sum().roundToInt() + fun getHappiness() = happinessForNextTurn fun getCivResources(): ResourceSupplyList {