From 8f0c3f1c02e53778cede6767ad075369c3782781 Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Thu, 27 Jun 2019 12:01:08 +0300 Subject: [PATCH] Resolved #908 - added Science overview to overview screen --- android/build.gradle | 4 +-- .../logic/civilization/CivilizationInfo.kt | 20 ++++--------- core/src/com/unciv/models/stats/Stats.kt | 7 +++++ core/src/com/unciv/ui/EmpireOverviewScreen.kt | 30 +++++++++++++++---- 4 files changed, 39 insertions(+), 22 deletions(-) diff --git a/android/build.gradle b/android/build.gradle index 5a3250b78d..0ba9ef2128 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -21,8 +21,8 @@ android { applicationId "com.unciv.app" minSdkVersion 14 targetSdkVersion 28 - versionCode 263 - versionName "2.17.10-patch2" + versionCode 264 + versionName "2.17.11" } // Had to add this crap for Travis to build, it wanted to sign the app diff --git a/core/src/com/unciv/logic/civilization/CivilizationInfo.kt b/core/src/com/unciv/logic/civilization/CivilizationInfo.kt index eba9621664..65affb3b41 100644 --- a/core/src/com/unciv/logic/civilization/CivilizationInfo.kt +++ b/core/src/com/unciv/logic/civilization/CivilizationInfo.kt @@ -20,6 +20,7 @@ import com.unciv.models.gamebasics.tech.TechEra import com.unciv.models.gamebasics.tile.ResourceSupplyList import com.unciv.models.gamebasics.tile.ResourceType import com.unciv.models.stats.Stat +import com.unciv.models.stats.StatMap import com.unciv.models.stats.Stats import java.util.* import kotlin.collections.ArrayList @@ -138,10 +139,9 @@ class CivilizationInfo { } fun getStatMapForNextTurn(): HashMap { - val statMap = HashMap() + val statMap = StatMap() for (city in cities){ - if(!statMap.containsKey("Cities")) statMap["Cities"]=Stats() - statMap["Cities"] = statMap["Cities"]!! + city.cityStats.currentCityStats + statMap.add("Cities",city.cityStats.currentCityStats) } //City states culture bonus @@ -150,17 +150,12 @@ class CivilizationInfo { && otherCiv.getDiplomacyManager(civName).relationshipLevel() >= RelationshipLevel.Friend) { val cultureBonus = Stats() cultureBonus.add(Stat.Culture, 3f * (getEra().ordinal+1)) - if (statMap.containsKey("City States")) - statMap["City States"] = statMap["City States"]!! + cultureBonus - else - statMap["City States"] = cultureBonus + statMap.add("City States",cultureBonus) } } for (entry in getHappinessBreakdown()) { - if (!statMap.containsKey(entry.key)) - statMap[entry.key] = Stats() - statMap[entry.key]!!.happiness += entry.value + statMap.add(entry.key,Stats().apply { happiness=entry.value }) } statMap["Transportation upkeep"] = Stats().apply { gold=- getTransportationUpkeep().toFloat()} @@ -168,10 +163,7 @@ class CivilizationInfo { if (policies.isAdopted("Mandate Of Heaven")) { val happiness = statMap.values.map { it.happiness }.sum() - if(happiness>0) { - if (!statMap.containsKey("Policies")) statMap["Policies"] = Stats() - statMap["Policies"]!!.culture += happiness / 2 - } + if(happiness>0) statMap.add("Policies",Stats().apply { culture=happiness/2 }) } // negative gold hurts science diff --git a/core/src/com/unciv/models/stats/Stats.kt b/core/src/com/unciv/models/stats/Stats.kt index bc3083e04e..9ee97c26fc 100644 --- a/core/src/com/unciv/models/stats/Stats.kt +++ b/core/src/com/unciv/models/stats/Stats.kt @@ -87,3 +87,10 @@ open class Stats() { science=hashMap[Stat.Science]!! } } + +class StatMap:LinkedHashMap(){ + fun add(source:String,stats:Stats){ + if(!containsKey(source)) put(source,stats) + else put(source, get(source)!!+stats) + } +} \ No newline at end of file diff --git a/core/src/com/unciv/ui/EmpireOverviewScreen.kt b/core/src/com/unciv/ui/EmpireOverviewScreen.kt index e9df97b3ed..d69440d990 100644 --- a/core/src/com/unciv/ui/EmpireOverviewScreen.kt +++ b/core/src/com/unciv/ui/EmpireOverviewScreen.kt @@ -44,12 +44,12 @@ class EmpireOverviewScreen : CameraStageBaseScreen(){ val setStatsInfoButton = TextButton("Stats".tr(),skin) setStatsInfoButton.onClick { centerTable.clear() - centerTable.add(ScrollPane(HorizontalGroup().apply { - space(40f) - top() - addActor(getHappinessTable()) - addActor(getGoldTable()) - addActor(getGreatPeopleTable()) + centerTable.add(ScrollPane(Table().apply { + defaults().pad(40f) + add(getHappinessTable()).top() + add(getGoldTable()).top() + add(getScienceTable()).top() + add(getGreatPeopleTable()).top() })) centerTable.pack() } @@ -169,6 +169,24 @@ class EmpireOverviewScreen : CameraStageBaseScreen(){ } + private fun getScienceTable(): Table { + val scienceTable = Table(skin) + scienceTable.defaults().pad(5f) + scienceTable.add("Science".toLabel().setFontSize(24)).colspan(2).row() + scienceTable.addSeparator() + val scienceStats = currentPlayerCivInfo.getStatMapForNextTurn() + .filter { it.value.science!=0f } + for (entry in scienceStats) { + scienceTable.add(entry.key.tr()) + scienceTable.add(entry.value.science.roundToInt().toString()).row() + } + scienceTable.add("Total".tr()) + scienceTable.add(scienceStats.values.map { it.science }.sum().roundToInt().toString()) + scienceTable.pack() + return scienceTable + } + + private fun getGreatPeopleTable(): Table { val greatPeopleTable = Table(skin)