National wonders can now be built for each civ separately

This commit is contained in:
Yair Morgenstern 2018-05-25 18:50:57 +03:00
parent 9389e936fc
commit cd5a3b4741
3 changed files with 10 additions and 4 deletions

View File

@ -106,7 +106,7 @@ class CityConstructions {
construction.postBuildEvent(this)
inProgressConstructions.remove(currentConstruction)
if(construction is Building && construction.isWonder) {
if(construction is Building && construction.isWonder && construction.requiredBuildingInAllCities==null) {
val playerCiv = cityInfo.civInfo.gameInfo.getPlayerCivilization()
val builtLocation = if(playerCiv.exploredTiles.contains(cityInfo.location)) cityInfo.name else "a faraway land"
playerCiv.addNotification("$currentConstruction has been built in $builtLocation", cityInfo.location)

View File

@ -146,13 +146,19 @@ class Building : NamedStats(), IConstruction{
if (construction.isBuilt(name)) return false
val civInfo = construction.cityInfo.civInfo
if (requiredTech != null && !civInfo.tech.isResearched(requiredTech!!)) return false
if (isWonder && civInfo.gameInfo.civilizations.flatMap { it.cities }.any {
if (isWonder && requiredBuildingInAllCities==null
&& civInfo.gameInfo.civilizations.flatMap { it.cities }.any {
it.cityConstructions.isBuilding(name) || it.cityConstructions.isBuilt(name)
})
return false
if (requiredBuilding != null && !construction.isBuilt(requiredBuilding!!)) return false
if (requiredBuildingInAllCities != null && civInfo.cities.any { !it.cityConstructions.isBuilt(requiredBuildingInAllCities!!) })
return false
if(requiredBuildingInAllCities!=null && civInfo.cities.any {
it.cityConstructions.isBuilding(name) || it.cityConstructions.isBuilt(name)
})
return false
if (cannotBeBuiltWith != null && construction.isBuilt(cannotBeBuiltWith!!)) return false
if ("Must be next to desert" == unique && !construction.cityInfo.getCenterTile().getTilesInDistance(1).any { it.baseTerrain == "Desert" })
return false

View File

@ -47,7 +47,7 @@ class ConstructionPickerScreen(val city: CityInfo) : PickerScreen() {
val specials = VerticalGroup().space(10f)
for (building in GameBasics.Buildings.values) {
if (!building.isBuildable(cityConstructions)) continue
if (!building.isBuildable(cityConstructions) && building.name!=cityConstructions.currentConstruction) continue
val productionTextButton = getProductionButton(building.name,
building.name + "\r\n" + cityConstructions.turnsToConstruction(building.name) + " turns",
building.getDescription(true, civInfo.policies.getAdoptedPolicies()),
@ -58,7 +58,7 @@ class ConstructionPickerScreen(val city: CityInfo) : PickerScreen() {
regularBuildings.addActor(productionTextButton)
}
for (unit in GameBasics.Units.values.filter { it.isBuildable(cityConstructions) || it.name==cityConstructions.currentConstruction}) {
for (unit in GameBasics.Units.values.filter { it.isBuildable(cityConstructions)}) {
units.addActor(getProductionButton(unit.name,
unit.name + "\r\n" + cityConstructions.turnsToConstruction(unit.name) + " turns",
unit.getDescription(true), "Train " + unit.name))