From 1542b92e63e6d2f92deabb6fa6f3357352dc133b Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Wed, 13 Mar 2024 23:11:39 +0200 Subject: [PATCH] Resolved #11289 - Free buildings granted properly when era-free cities also granted --- core/src/com/unciv/logic/city/CityConstructions.kt | 7 +++++-- core/src/com/unciv/logic/city/managers/CityFounder.kt | 4 ++-- core/src/com/unciv/logic/civilization/Civilization.kt | 5 +---- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/core/src/com/unciv/logic/city/CityConstructions.kt b/core/src/com/unciv/logic/city/CityConstructions.kt index 629f80e505..314a700a6f 100644 --- a/core/src/com/unciv/logic/city/CityConstructions.kt +++ b/core/src/com/unciv/logic/city/CityConstructions.kt @@ -512,7 +512,9 @@ class CityConstructions : IsPartOfGameInfoSerialization { addBuilding(building) } - fun addBuilding(building: Building) { + fun addBuilding(building: Building, + /** False when creating initial buildings in city - so we don't "waste" a free building on a building we're going to get anyway, from settler buildings */ + tryAddFreeBuildings: Boolean = true) { val buildingName = building.name val civ = city.civ @@ -547,7 +549,8 @@ class CityConstructions : IsPartOfGameInfoSerialization { } else city.reassignPopulationDeferred() - city.civ.civConstructions.tryAddFreeBuildings() + if (tryAddFreeBuildings) + city.civ.civConstructions.tryAddFreeBuildings() } fun triggerNewBuildingUniques(building: Building) { diff --git a/core/src/com/unciv/logic/city/managers/CityFounder.kt b/core/src/com/unciv/logic/city/managers/CityFounder.kt index aeace52b27..e50be71a80 100644 --- a/core/src/com/unciv/logic/city/managers/CityFounder.kt +++ b/core/src/com/unciv/logic/city/managers/CityFounder.kt @@ -203,14 +203,14 @@ class CityFounder { private fun addStartingBuildings(city: City, civInfo: Civilization, startingEra: String) { val ruleset = civInfo.gameInfo.ruleset - if (civInfo.cities.size == 1) city.cityConstructions.addBuilding(city.capitalCityIndicator()) + if (civInfo.cities.size == 1) city.cityConstructions.addBuilding(city.capitalCityIndicator(), tryAddFreeBuildings = false) // Add buildings and pop we get from starting in this era for (buildingName in ruleset.eras[startingEra]!!.settlerBuildings) { val building = ruleset.buildings[buildingName] ?: continue val uniqueBuilding = civInfo.getEquivalentBuilding(building) if (uniqueBuilding.isBuildable(city.cityConstructions)) - city.cityConstructions.addBuilding(uniqueBuilding) + city.cityConstructions.addBuilding(uniqueBuilding, tryAddFreeBuildings = false) } civInfo.civConstructions.tryAddFreeBuildings() diff --git a/core/src/com/unciv/logic/civilization/Civilization.kt b/core/src/com/unciv/logic/civilization/Civilization.kt index 2d224fb626..060f8c253e 100644 --- a/core/src/com/unciv/logic/civilization/Civilization.kt +++ b/core/src/com/unciv/logic/civilization/Civilization.kt @@ -870,13 +870,10 @@ class Civilization : IsPartOfGameInfoSerialization { it.hasUnique(UniqueType.MovesToNewCapital) }.toSet() - // Remove the buildings from old capital oldCapital.cityConstructions.removeBuildings(buildingsToMove) // Add the buildings to new capital - buildingsToMove.forEach { - city.cityConstructions.addBuilding(it) - } + for (building in buildingsToMove) city.cityConstructions.addBuilding(building) } } oldCapital?.cityConstructions?.removeBuilding(oldCapital.capitalCityIndicator())