Added star icon to capital city

This commit is contained in:
Yair Morgenstern
2018-05-18 15:53:12 +03:00
parent cb537b0f84
commit 017d1f3f89
6 changed files with 22 additions and 18 deletions

View File

@ -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.

View File

@ -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<String>): Stats {
val stats = Stats()
@ -139,13 +137,13 @@ class CityStats {
private fun getStatsFromPolicies(adoptedPolicies: HashSet<String>): 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<String>, 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<TileInfo>()
var tilesToCheck : List<TileInfo> = listOf(cityInfo.getCenterTile())
while (tilesToCheck.isNotEmpty()) {

View File

@ -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

View File

@ -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" ->

View File

@ -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)