mirror of
https://github.com/yairm210/Unciv.git
synced 2025-07-15 02:09:21 +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:
@ -87,6 +87,9 @@
|
|||||||
Japanese:"回る"
|
Japanese:"回る"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
"Next unit":{}
|
||||||
|
"Pick a policy":{}
|
||||||
|
|
||||||
/////// Unit
|
/////// Unit
|
||||||
|
|
||||||
"Movement":{
|
"Movement":{
|
||||||
|
@ -210,9 +210,12 @@ class CityConstructions {
|
|||||||
|
|
||||||
fun addCultureBuilding() {
|
fun addCultureBuilding() {
|
||||||
val basicCultureBuildings = listOf("Monument", "Temple", "Opera House", "Museum")
|
val basicCultureBuildings = listOf("Monument", "Temple", "Opera House", "Museum")
|
||||||
val buildableCultureBuildings = GameBasics.Buildings.values
|
.map { cityInfo.civInfo.getEquivalentBuilding(it) }
|
||||||
.filter { it.isBuildable(this)
|
|
||||||
&& (basicCultureBuildings.contains(it.name) || basicCultureBuildings.contains(it.replaces))}
|
val buildableCultureBuildings = basicCultureBuildings
|
||||||
|
.map { GameBasics.Buildings[it]!! }
|
||||||
|
.filter { it.isBuildable(this)}
|
||||||
|
|
||||||
if (buildableCultureBuildings.isEmpty()) return
|
if (buildableCultureBuildings.isEmpty()) return
|
||||||
val cultureBuildingToBuild = buildableCultureBuildings.minBy { it.cost }!!.name
|
val cultureBuildingToBuild = buildableCultureBuildings.minBy { it.cost }!!.name
|
||||||
addBuilding(cultureBuildingToBuild)
|
addBuilding(cultureBuildingToBuild)
|
||||||
|
@ -2,11 +2,11 @@ package com.unciv.logic.city
|
|||||||
|
|
||||||
import com.badlogic.gdx.graphics.Color
|
import com.badlogic.gdx.graphics.Color
|
||||||
import com.badlogic.gdx.math.Vector2
|
import com.badlogic.gdx.math.Vector2
|
||||||
|
import com.unciv.Constants
|
||||||
import com.unciv.logic.civilization.CivilizationInfo
|
import com.unciv.logic.civilization.CivilizationInfo
|
||||||
import com.unciv.logic.map.RoadStatus
|
import com.unciv.logic.map.RoadStatus
|
||||||
import com.unciv.logic.map.TileInfo
|
import com.unciv.logic.map.TileInfo
|
||||||
import com.unciv.logic.map.TileMap
|
import com.unciv.logic.map.TileMap
|
||||||
import com.unciv.Constants
|
|
||||||
import com.unciv.models.Counter
|
import com.unciv.models.Counter
|
||||||
import com.unciv.models.gamebasics.GameBasics
|
import com.unciv.models.gamebasics.GameBasics
|
||||||
import com.unciv.models.gamebasics.tile.ResourceType
|
import com.unciv.models.gamebasics.tile.ResourceType
|
||||||
@ -261,17 +261,12 @@ class CityInfo {
|
|||||||
isBeingRazed=false
|
isBeingRazed=false
|
||||||
|
|
||||||
// Transfer unique buildings
|
// Transfer unique buildings
|
||||||
val builtBuildings = cityConstructions.getBuiltBuildings().map{ it.name }
|
for(building in cityConstructions.getBuiltBuildings()) {
|
||||||
for(building in GameBasics.Buildings.values
|
val civEquivalentBuilding = newCivInfo.getEquivalentBuilding(building.name)
|
||||||
.filter{ it.uniqueTo == newCivInfo.civName && builtBuildings.contains(it.replaces) }) {
|
if(building.name != civEquivalentBuilding) {
|
||||||
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.removeBuilding(building.name)
|
||||||
cityConstructions.addBuilding(building.replaces!!)
|
cityConstructions.addBuilding(civEquivalentBuilding)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
tryUpdateRoadStatus()
|
tryUpdateRoadStatus()
|
||||||
|
@ -129,7 +129,6 @@ class CivilizationInfo {
|
|||||||
|
|
||||||
fun getDiplomacyManager(civInfo: CivilizationInfo) = diplomacy[civInfo.civName]!!
|
fun getDiplomacyManager(civInfo: CivilizationInfo) = diplomacy[civInfo.civName]!!
|
||||||
fun getKnownCivs() = diplomacy.values.map { it.otherCiv() }
|
fun getKnownCivs() = diplomacy.values.map { it.otherCiv() }
|
||||||
fun knows(otherCiv: CivilizationInfo) = knows(otherCiv.civName)
|
|
||||||
fun knows(otherCivName: String) = diplomacy.containsKey(otherCivName)
|
fun knows(otherCivName: String) = diplomacy.containsKey(otherCivName)
|
||||||
|
|
||||||
fun getCapital()=cities.first { it.isCapital() }
|
fun getCapital()=cities.first { it.isCapital() }
|
||||||
@ -139,6 +138,8 @@ class CivilizationInfo {
|
|||||||
fun isCityState(): Boolean = getNation().isCityState()
|
fun isCityState(): Boolean = getNation().isCityState()
|
||||||
fun getCityStateType(): CityStateType = getNation().cityStateType!!
|
fun getCityStateType(): CityStateType = getNation().cityStateType!!
|
||||||
fun isMajorCiv() = !isBarbarianCivilization() && !isCityState()
|
fun isMajorCiv() = !isBarbarianCivilization() && !isCityState()
|
||||||
|
|
||||||
|
|
||||||
fun getStatsForNextTurn():Stats = getStatMapForNextTurn().values.toList().reduce{a,b->a+b}
|
fun getStatsForNextTurn():Stats = getStatMapForNextTurn().values.toList().reduce{a,b->a+b}
|
||||||
|
|
||||||
fun getStatMapForNextTurn(): HashMap<String, Stats> {
|
fun getStatMapForNextTurn(): HashMap<String, Stats> {
|
||||||
@ -319,6 +320,15 @@ class CivilizationInfo {
|
|||||||
return null
|
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() {
|
fun updateViewableTiles() {
|
||||||
val newViewableTiles = HashSet<TileInfo>()
|
val newViewableTiles = HashSet<TileInfo>()
|
||||||
newViewableTiles.addAll(cities.flatMap { it.getTiles() }.flatMap { it.neighbors }) // tiles adjacent to city tiles
|
newViewableTiles.addAll(cities.flatMap { it.getTiles() }.flatMap { it.neighbors }) // tiles adjacent to city tiles
|
||||||
|
Reference in New Issue
Block a user