From cd5a3b47414559b3ebae643340bea88b709a0908 Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Fri, 25 May 2018 18:50:57 +0300 Subject: [PATCH] National wonders can now be built for each civ separately --- core/src/com/unciv/logic/city/CityConstructions.kt | 2 +- core/src/com/unciv/models/gamebasics/Building.kt | 8 +++++++- .../unciv/ui/pickerscreens/ConstructionPickerScreen.kt | 4 ++-- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/core/src/com/unciv/logic/city/CityConstructions.kt b/core/src/com/unciv/logic/city/CityConstructions.kt index cd82020c9e..f95d712a55 100644 --- a/core/src/com/unciv/logic/city/CityConstructions.kt +++ b/core/src/com/unciv/logic/city/CityConstructions.kt @@ -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) diff --git a/core/src/com/unciv/models/gamebasics/Building.kt b/core/src/com/unciv/models/gamebasics/Building.kt index 884abe97b4..f2119eeb8d 100644 --- a/core/src/com/unciv/models/gamebasics/Building.kt +++ b/core/src/com/unciv/models/gamebasics/Building.kt @@ -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 diff --git a/core/src/com/unciv/ui/pickerscreens/ConstructionPickerScreen.kt b/core/src/com/unciv/ui/pickerscreens/ConstructionPickerScreen.kt index 3db3c261fe..60f18a7c5e 100644 --- a/core/src/com/unciv/ui/pickerscreens/ConstructionPickerScreen.kt +++ b/core/src/com/unciv/ui/pickerscreens/ConstructionPickerScreen.kt @@ -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))