mirror of
https://github.com/yairm210/Unciv.git
synced 2025-02-23 13:10:54 +07:00
Continuation of #738 - readability, and solves case where 2 civs have unique buildings to the same base building (say Royal Library and Paper Maker)
#729 - AddCultureBuilding now adds civ-specific building (e.g. Burial Tomb), not just checks to see if it's built
This commit is contained in:
parent
42a0e2e771
commit
a9a1962cec
@ -86,6 +86,9 @@
|
||||
Portuguese:"turnos"
|
||||
Japanese:"回る"
|
||||
}
|
||||
|
||||
"Next unit":{}
|
||||
"Pick a policy":{}
|
||||
|
||||
/////// Unit
|
||||
|
||||
|
@ -210,9 +210,12 @@ class CityConstructions {
|
||||
|
||||
fun addCultureBuilding() {
|
||||
val basicCultureBuildings = listOf("Monument", "Temple", "Opera House", "Museum")
|
||||
val buildableCultureBuildings = GameBasics.Buildings.values
|
||||
.filter { it.isBuildable(this)
|
||||
&& (basicCultureBuildings.contains(it.name) || basicCultureBuildings.contains(it.replaces))}
|
||||
.map { cityInfo.civInfo.getEquivalentBuilding(it) }
|
||||
|
||||
val buildableCultureBuildings = basicCultureBuildings
|
||||
.map { GameBasics.Buildings[it]!! }
|
||||
.filter { it.isBuildable(this)}
|
||||
|
||||
if (buildableCultureBuildings.isEmpty()) return
|
||||
val cultureBuildingToBuild = buildableCultureBuildings.minBy { it.cost }!!.name
|
||||
addBuilding(cultureBuildingToBuild)
|
||||
|
@ -2,11 +2,11 @@ package com.unciv.logic.city
|
||||
|
||||
import com.badlogic.gdx.graphics.Color
|
||||
import com.badlogic.gdx.math.Vector2
|
||||
import com.unciv.Constants
|
||||
import com.unciv.logic.civilization.CivilizationInfo
|
||||
import com.unciv.logic.map.RoadStatus
|
||||
import com.unciv.logic.map.TileInfo
|
||||
import com.unciv.logic.map.TileMap
|
||||
import com.unciv.Constants
|
||||
import com.unciv.models.Counter
|
||||
import com.unciv.models.gamebasics.GameBasics
|
||||
import com.unciv.models.gamebasics.tile.ResourceType
|
||||
@ -261,17 +261,12 @@ class CityInfo {
|
||||
isBeingRazed=false
|
||||
|
||||
// Transfer unique buildings
|
||||
val builtBuildings = cityConstructions.getBuiltBuildings().map{ it.name }
|
||||
for(building in GameBasics.Buildings.values
|
||||
.filter{ it.uniqueTo == newCivInfo.civName && builtBuildings.contains(it.replaces) }) {
|
||||
cityConstructions.removeBuilding(building.replaces!!)
|
||||
cityConstructions.addBuilding(building.name)
|
||||
}
|
||||
|
||||
for(building in cityConstructions.getBuiltBuildings()
|
||||
.filter{ it.uniqueTo != newCivInfo.civName && it.replaces != null}) {
|
||||
cityConstructions.removeBuilding(building.name)
|
||||
cityConstructions.addBuilding(building.replaces!!)
|
||||
for(building in cityConstructions.getBuiltBuildings()) {
|
||||
val civEquivalentBuilding = newCivInfo.getEquivalentBuilding(building.name)
|
||||
if(building.name != civEquivalentBuilding) {
|
||||
cityConstructions.removeBuilding(building.name)
|
||||
cityConstructions.addBuilding(civEquivalentBuilding)
|
||||
}
|
||||
}
|
||||
|
||||
tryUpdateRoadStatus()
|
||||
|
@ -129,7 +129,6 @@ class CivilizationInfo {
|
||||
|
||||
fun getDiplomacyManager(civInfo: CivilizationInfo) = diplomacy[civInfo.civName]!!
|
||||
fun getKnownCivs() = diplomacy.values.map { it.otherCiv() }
|
||||
fun knows(otherCiv: CivilizationInfo) = knows(otherCiv.civName)
|
||||
fun knows(otherCivName: String) = diplomacy.containsKey(otherCivName)
|
||||
|
||||
fun getCapital()=cities.first { it.isCapital() }
|
||||
@ -139,6 +138,8 @@ class CivilizationInfo {
|
||||
fun isCityState(): Boolean = getNation().isCityState()
|
||||
fun getCityStateType(): CityStateType = getNation().cityStateType!!
|
||||
fun isMajorCiv() = !isBarbarianCivilization() && !isCityState()
|
||||
|
||||
|
||||
fun getStatsForNextTurn():Stats = getStatMapForNextTurn().values.toList().reduce{a,b->a+b}
|
||||
|
||||
fun getStatMapForNextTurn(): HashMap<String, Stats> {
|
||||
@ -319,6 +320,15 @@ class CivilizationInfo {
|
||||
return null
|
||||
}
|
||||
|
||||
fun getEquivalentBuilding(buildingName:String): String {
|
||||
val building = GameBasics.Buildings[buildingName]!!
|
||||
val baseBuildingName = if(building.replaces==null) buildingName else building.replaces!!
|
||||
for(blding in GameBasics.Buildings.values)
|
||||
if(blding.replaces==buildingName && blding.uniqueTo==civName)
|
||||
return blding.name
|
||||
return baseBuildingName
|
||||
}
|
||||
|
||||
fun updateViewableTiles() {
|
||||
val newViewableTiles = HashSet<TileInfo>()
|
||||
newViewableTiles.addAll(cities.flatMap { it.getTiles() }.flatMap { it.neighbors }) // tiles adjacent to city tiles
|
||||
|
Loading…
Reference in New Issue
Block a user