From 50931a86c1c2b6d66e17139732c176a3b033d649 Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Thu, 7 Feb 2019 22:56:13 +0200 Subject: [PATCH] Resolved #447 - cities now have roads and railroads only when corresponding tech has been researched --- core/src/com/unciv/logic/city/CityInfo.kt | 24 +++++++++++++++---- .../logic/civilization/CivilizationInfo.kt | 19 ++++++++------- 2 files changed, 30 insertions(+), 13 deletions(-) diff --git a/core/src/com/unciv/logic/city/CityInfo.kt b/core/src/com/unciv/logic/city/CityInfo.kt index ed7f1845c1..6ea9807b82 100644 --- a/core/src/com/unciv/logic/city/CityInfo.kt +++ b/core/src/com/unciv/logic/city/CityInfo.kt @@ -64,7 +64,9 @@ class CityInfo { expansion.reset() val tile = getCenterTile() - tile.roadStatus = RoadStatus.Railroad + + tryUpdateRoadStatus() + if (listOf("Forest", "Jungle", "Marsh").contains(tile.terrainFeature)) tile.terrainFeature = null @@ -169,6 +171,13 @@ class CityInfo { cityConstructions.setTransients() } + fun startTurn(){ + cityStats.update() + tryUpdateRoadStatus() + attackedThisTurn = false + if (resistanceCounter > 0) resistanceCounter-- + } + fun endTurn() { val stats = cityStats.currentCityStats if (cityConstructions.currentConstruction == CityConstructions.Settler && stats.food > 0) { @@ -176,7 +185,6 @@ class CityInfo { stats.food = 0f } - cityConstructions.nextTurn(stats) expansion.nextTurn(stats.culture) if(isBeingRazed){ @@ -189,13 +197,11 @@ class CityInfo { } } else population.nextTurn(stats.food) - if (resistanceCounter > 0) resistanceCounter-- if(this in civInfo.cities) { // city was not destroyed health = min(health + 20, getMaxHealth()) population.unassignExtraPopulation() } - attackedThisTurn = false } fun destroyCity() { @@ -223,6 +229,7 @@ class CityInfo { for(building in cityConstructions.getBuiltBuildings().filter { it.requiredBuildingInAllCities!=null }) cityConstructions.removeBuilding(building.name) isBeingRazed=false + tryUpdateRoadStatus() } fun canAcquireTile(newTileInfo: TileInfo): Boolean { @@ -236,5 +243,14 @@ class CityInfo { return false } + fun tryUpdateRoadStatus(){ + if(getCenterTile().roadStatus==RoadStatus.None + && GameBasics.TileImprovements["Road"]!!.techRequired in civInfo.tech.techsResearched) + getCenterTile().roadStatus==RoadStatus.Road + + else if(getCenterTile().roadStatus!=RoadStatus.Railroad + && GameBasics.TileImprovements["Railroad"]!!.techRequired in civInfo.tech.techsResearched) + getCenterTile().roadStatus==RoadStatus.Railroad + } //endregion } \ No newline at end of file diff --git a/core/src/com/unciv/logic/civilization/CivilizationInfo.kt b/core/src/com/unciv/logic/civilization/CivilizationInfo.kt index 5cd8775b7a..1670338621 100644 --- a/core/src/com/unciv/logic/civilization/CivilizationInfo.kt +++ b/core/src/com/unciv/logic/civilization/CivilizationInfo.kt @@ -320,6 +320,16 @@ class CivilizationInfo { updateViewableTiles() } + fun startTurn(){ + updateViewableTiles() // adds explored tiles so that the units will be able to perform automated actions better + setCitiesConnectedToCapitalTransients() + for (city in cities){ + city.startTurn() + } + happiness = getHappinessForNextTurn().values.sum().roundToInt() + getCivUnits().toList().forEach { it.startTurn() } + } + fun endTurn() { notifications.clear() @@ -370,15 +380,6 @@ class CivilizationInfo { return stats } - fun startTurn(){ - updateViewableTiles() // adds explored tiles so that the units will be able to perform automated actions better - setCitiesConnectedToCapitalTransients() - for (city in cities) - city.cityStats.update() - happiness = getHappinessForNextTurn().values.sum().roundToInt() - getCivUnits().toList().forEach { it.startTurn() } - } - fun canEnterTiles(otherCiv: CivilizationInfo): Boolean { if(otherCiv==this) return true if(isAtWarWith(otherCiv)) return true