diff --git a/android/assets/StatIcons/Star.png b/android/assets/StatIcons/Star.png new file mode 100644 index 0000000000..0a1c8f6f66 Binary files /dev/null and b/android/assets/StatIcons/Star.png differ diff --git a/core/src/com/unciv/logic/city/CityInfo.kt b/core/src/com/unciv/logic/city/CityInfo.kt index 6a3f14f39b..325cf4d963 100644 --- a/core/src/com/unciv/logic/city/CityInfo.kt +++ b/core/src/com/unciv/logic/city/CityInfo.kt @@ -136,6 +136,7 @@ class CityInfo { health = min(health+maxHealth/10, maxHealth) } + fun isCapital() = cityConstructions.isBuilt("Palace") internal fun getMaxHealth(): Int { return 200 // add more later when walls citadel etc. diff --git a/core/src/com/unciv/logic/city/CityStats.kt b/core/src/com/unciv/logic/city/CityStats.kt index 555e80e5cb..e273bf34d0 100644 --- a/core/src/com/unciv/logic/city/CityStats.kt +++ b/core/src/com/unciv/logic/city/CityStats.kt @@ -26,9 +26,9 @@ class CityStats { fun getStatsFromTradeRoute(): Stats { val stats = Stats() - if (!isCapital && isConnectedToCapital(RoadStatus.Road)) { + if (!cityInfo.isCapital() && isConnectedToCapital(RoadStatus.Road)) { val civInfo = cityInfo.civInfo - var goldFromTradeRoute = civInfo.capital.population.population * 0.15 + cityInfo.population.population * 1.1 - 1 // Calculated by http://civilization.wikia.com/wiki/Trade_route_(Civ5) + var goldFromTradeRoute = civInfo.getCapital().population.population * 0.15 + cityInfo.population.population * 1.1 - 1 // Calculated by http://civilization.wikia.com/wiki/Trade_route_(Civ5) if (civInfo.policies.isAdopted("Trade Unions")) goldFromTradeRoute += 2.0 if (civInfo.buildingUniques.contains("TradeRouteGoldIncrease")) goldFromTradeRoute *= 1.25 // Machu Pichu speciality stats.gold += goldFromTradeRoute.toFloat() @@ -55,7 +55,8 @@ class CityStats { private fun getStatPercentBonusesFromRailroad(): Stats { val stats = Stats() - if (cityInfo.civInfo.tech.isResearched("Combustion") && (isCapital || isConnectedToCapital(RoadStatus.Railroad))) + if (cityInfo.civInfo.tech.isResearched("Combustion") + && (cityInfo.isCapital() || isConnectedToCapital(RoadStatus.Railroad))) stats.production += 25f return stats } @@ -85,7 +86,7 @@ class CityStats { private fun getGrowthBonusFromPolicies(): Float { var bonus = 0f - if (cityInfo.civInfo.policies.isAdopted("Landed Elite") && isCapital) + if (cityInfo.civInfo.policies.isAdopted("Landed Elite") && cityInfo.isCapital()) bonus += 0.1f if (cityInfo.civInfo.policies.isAdopted("Tradition Complete")) bonus += 0.15f @@ -109,7 +110,7 @@ class CityStats { if (civInfo.policies.isAdopted("Aristocracy")) happiness += (cityInfo.population.population / 10).toFloat() - if (civInfo.policies.isAdopted("Monarchy") && isCapital) + if (civInfo.policies.isAdopted("Monarchy") && cityInfo.isCapital()) happiness += (cityInfo.population.population / 2).toFloat() if (civInfo.policies.isAdopted("Meritocracy") && isConnectedToCapital(RoadStatus.Road)) happiness += 1f @@ -119,9 +120,6 @@ class CityStats { return happiness } - private val isCapital: Boolean - get() = cityInfo.civInfo.capital === cityInfo - private fun getStatsFromSpecialists(specialists: Stats, policies: HashSet): Stats { val stats = Stats() @@ -139,13 +137,13 @@ class CityStats { private fun getStatsFromPolicies(adoptedPolicies: HashSet): Stats { val stats = Stats() - if (adoptedPolicies.contains("Tradition") && isCapital) + if (adoptedPolicies.contains("Tradition") && cityInfo.isCapital()) stats.culture += 3f - if (adoptedPolicies.contains("Landed Elite") && isCapital) + if (adoptedPolicies.contains("Landed Elite") && cityInfo.isCapital()) stats.food += 2f if (adoptedPolicies.contains("Tradition Complete")) stats.food += 2f - if (adoptedPolicies.contains("Monarchy") && isCapital) + if (adoptedPolicies.contains("Monarchy") && cityInfo.isCapital()) stats.gold += (cityInfo.population.population / 2).toFloat() if (adoptedPolicies.contains("Liberty")) stats.culture += 1f @@ -168,14 +166,14 @@ class CityStats { private fun getStatPercentBonusesFromPolicies(policies: HashSet, cityConstructions: CityConstructions): Stats { val stats = Stats() - if (policies.contains("Collective Rule") && isCapital + if (policies.contains("Collective Rule") && cityInfo.isCapital() && "Settler" == cityConstructions.currentConstruction) stats.production += 50f if (policies.contains("Republic") && cityConstructions.getCurrentConstruction() is Building) stats.production += 5f if (policies.contains("Reformation") && cityConstructions.builtBuildings.any { GameBasics.Buildings[it]!!.isWonder }) stats.culture += 33f - if (policies.contains("Commerce") && isCapital) + if (policies.contains("Commerce") && cityInfo.isCapital()) stats.gold += 25f if (policies.contains("Sovereignty") && cityInfo.civInfo.happiness >= 0) stats.science += 15f @@ -238,7 +236,7 @@ class CityStats { private fun isConnectedToCapital(roadType: RoadStatus): Boolean { if(cityInfo.civInfo.cities.count()<2) return false// first city! - val capitalTile = cityInfo.civInfo.capital.getCenterTile() + val capitalTile = cityInfo.civInfo.getCapital().getCenterTile() val tilesReached = HashSet() var tilesToCheck : List = listOf(cityInfo.getCenterTile()) while (tilesToCheck.isNotEmpty()) { diff --git a/core/src/com/unciv/logic/civilization/CivilizationInfo.kt b/core/src/com/unciv/logic/civilization/CivilizationInfo.kt index c414165a6a..c1676f20d1 100644 --- a/core/src/com/unciv/logic/civilization/CivilizationInfo.kt +++ b/core/src/com/unciv/logic/civilization/CivilizationInfo.kt @@ -37,8 +37,7 @@ class CivilizationInfo { fun getCivilization(): Civilization {return GameBasics.Civilizations[civName]!!} - val capital: CityInfo - get() = cities.first { it.cityConstructions.isBuilt("Palace") } + fun getCapital()=cities.first { it.isCapital() } fun isPlayerCivilization() = gameInfo.getPlayerCivilization()==this diff --git a/core/src/com/unciv/logic/civilization/PolicyManager.kt b/core/src/com/unciv/logic/civilization/PolicyManager.kt index 4c5b7fb322..4beef44ff7 100644 --- a/core/src/com/unciv/logic/civilization/PolicyManager.kt +++ b/core/src/com/unciv/logic/civilization/PolicyManager.kt @@ -60,8 +60,8 @@ class PolicyManager { } when (policy.name) { - "Collective Rule" -> civInfo.placeUnitNearTile(civInfo.capital.location, "Settler") - "Citizenship" -> civInfo.placeUnitNearTile(civInfo.capital.location, "Worker") + "Collective Rule" -> civInfo.placeUnitNearTile(civInfo.getCapital().location, "Settler") + "Citizenship" -> civInfo.placeUnitNearTile(civInfo.getCapital().location, "Worker") "Representation", "Reformation" -> civInfo.goldenAges.enterGoldenAge() "Scientific Revolution" -> civInfo.tech.freeTechs += 2 "Legalism" -> diff --git a/core/src/com/unciv/ui/tilegroups/WorldTileGroup.kt b/core/src/com/unciv/ui/tilegroups/WorldTileGroup.kt index 3a7c003091..1c6760913e 100644 --- a/core/src/com/unciv/ui/tilegroups/WorldTileGroup.kt +++ b/core/src/com/unciv/ui/tilegroups/WorldTileGroup.kt @@ -1,5 +1,7 @@ package com.unciv.ui.tilegroups +import com.badlogic.gdx.graphics.Color +import com.badlogic.gdx.scenes.scene2d.ui.Image import com.badlogic.gdx.scenes.scene2d.ui.Label import com.badlogic.gdx.scenes.scene2d.ui.Table import com.badlogic.gdx.utils.Align @@ -67,6 +69,10 @@ class WorldTileGroup(tileInfo: TileInfo) : TileGroup(tileInfo) { cityButton!!.run { clear() + if(city.isCapital()){ + val starImage = Image(ImageGetter.getDrawable("StatIcons/Star.png").tint(Color.LIGHT_GRAY)) + add(starImage).size(20f).padLeft(10f) + } add(label).pad(10f) pack() setOrigin(Align.center)