From 84fe92fab3a3fc9e401298961c313bfa52003d17 Mon Sep 17 00:00:00 2001 From: itanasi <44038014+itanasi@users.noreply.github.com> Date: Tue, 27 Dec 2022 22:19:01 -0800 Subject: [PATCH] Negative stats UI Updates (#8240) * Fix UI for negative Science, Culture, and Faith * Fix more UI issues Support Happiness Transportation Upkeep Create Culture->Happiness deficit * Remove deficit Functionalize Rate + addition --- .../com/unciv/logic/civilization/CivInfoStats.kt | 4 ++++ .../unciv/ui/worldscreen/WorldScreenTopBar.kt | 16 +++++++++++----- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/core/src/com/unciv/logic/civilization/CivInfoStats.kt b/core/src/com/unciv/logic/civilization/CivInfoStats.kt index 0fdc190ab7..92fac8c875 100644 --- a/core/src/com/unciv/logic/civilization/CivInfoStats.kt +++ b/core/src/com/unciv/logic/civilization/CivInfoStats.kt @@ -274,6 +274,10 @@ class CivInfoStats(val civInfo: CivilizationInfo) { statMap.add("Policies", civInfo.policies.getAdoptedPolicies().count { !Policy.isBranchCompleteByName(it) } / 2) } + val transportUpkeep = getTransportationUpkeep() * -1 + if (transportUpkeep.happiness != 0f) + statMap["Transportation Upkeep"] = transportUpkeep.happiness + for ((key, value) in getGlobalStatsFromUniques()) statMap.add(key,value.happiness) diff --git a/core/src/com/unciv/ui/worldscreen/WorldScreenTopBar.kt b/core/src/com/unciv/ui/worldscreen/WorldScreenTopBar.kt index c4f446b4c4..de6cd63200 100644 --- a/core/src/com/unciv/ui/worldscreen/WorldScreenTopBar.kt +++ b/core/src/com/unciv/ui/worldscreen/WorldScreenTopBar.kt @@ -311,12 +311,16 @@ class WorldScreenTopBar(val worldScreen: WorldScreen) : Table() { layoutButtons() } + private fun rateLabel(value: Float): String { + return (if (value > 0) "+" else "") + value.roundToInt() + } + private fun updateStatsTable(civInfo: CivilizationInfo) { val nextTurnStats = civInfo.statsForNextTurn - val goldPerTurn = "(" + (if (nextTurnStats.gold > 0) "+" else "") + nextTurnStats.gold.roundToInt() + ")" + val goldPerTurn = " (" + rateLabel(nextTurnStats.gold) + ")" goldLabel.setText(civInfo.gold.toString() + goldPerTurn) - scienceLabel.setText("+" + nextTurnStats.science.roundToInt()) + scienceLabel.setText(rateLabel(nextTurnStats.science)) happinessLabel.setText(getHappinessText(civInfo)) @@ -331,7 +335,8 @@ class WorldScreenTopBar(val worldScreen: WorldScreen) : Table() { } cultureLabel.setText(getCultureText(civInfo, nextTurnStats)) - faithLabel.setText(civInfo.religionManager.storedFaith.toString() + "(+" + nextTurnStats.faith.roundToInt() + ")") + faithLabel.setText(civInfo.religionManager.storedFaith.toString() + + " (" + rateLabel(nextTurnStats.faith) + ")") } private fun updateResourcesTable(civInfo: CivilizationInfo) { @@ -357,11 +362,12 @@ class WorldScreenTopBar(val worldScreen: WorldScreen) : Table() { } private fun getCultureText(civInfo: CivilizationInfo, nextTurnStats: Stats): String { - var cultureString = "+" + nextTurnStats.culture.roundToInt() + var cultureString = rateLabel(nextTurnStats.culture) if (nextTurnStats.culture == 0f) return cultureString // when you start the game, you're not producing any culture val turnsToNextPolicy = (civInfo.policies.getCultureNeededForNextPolicy() - civInfo.policies.storedCulture) / nextTurnStats.culture - cultureString += if (turnsToNextPolicy <= 0f) " (!)" + cultureString += if (nextTurnStats.culture < 0) " (∞)" + else if (turnsToNextPolicy <= 0f) " (!)" else " (" + ceil(turnsToNextPolicy).toInt() + ")" return cultureString }