Deprecation of requiredBuildingInAllCities (#5922)

* Deprecation of requiredBuildingInAllCities

* Should be a warning not an error
This commit is contained in:
Yair Morgenstern 2022-01-09 21:40:47 +02:00 committed by GitHub
parent fc287bd9f3
commit 598f39e567
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 25 deletions

View File

@ -37,6 +37,7 @@ class Building : RulesetStatsObject(), INonPerpetualConstruction {
var isNationalWonder = false
fun isAnyWonder() = isWonder || isNationalWonder
var requiredBuilding: String? = null
@Deprecated("As of 3.18.15 - replace with RequiresBuildingInAllCities unique")
var requiredBuildingInAllCities: String? = null
/** A strategic resource that will be consumed by this building */
@ -237,17 +238,12 @@ class Building : RulesetStatsObject(), INonPerpetualConstruction {
textList += FormattedLine(stats.joinToString(", ", "{Cost}: "))
}
if (requiredTech != null || requiredBuilding != null || requiredBuildingInAllCities != null)
textList += FormattedLine()
if (requiredTech != null)
textList += FormattedLine("Required tech: [$requiredTech]",
link="Technology/$requiredTech")
if (requiredBuilding != null)
textList += FormattedLine("Requires [$requiredBuilding] to be built in the city",
link="Building/$requiredBuilding")
if (requiredBuildingInAllCities != null)
textList += FormattedLine("Requires [$requiredBuildingInAllCities] to be built in all cities",
link="Building/$requiredBuildingInAllCities")
val resourceRequirements = getResourceRequirements()
if (resourceRequirements.isNotEmpty()) {
@ -596,25 +592,11 @@ class Building : RulesetStatsObject(), INonPerpetualConstruction {
if (civInfo.cities.any { it.cityConstructions.isBuilt(name) })
rejectionReasons.add(RejectionReason.NationalWonderAlreadyBuilt)
if (requiredBuildingInAllCities != null && civInfo.gameInfo.ruleSet.buildings[requiredBuildingInAllCities!!] == null) {
rejectionReasons.add(RejectionReason.InvalidRequiredBuilding)
} else {
if (requiredBuildingInAllCities != null
&& civInfo.cities.any {
!it.isPuppet && !it.cityConstructions
.containsBuildingOrEquivalent(requiredBuildingInAllCities!!)
}
) {
rejectionReasons.add(RejectionReason.RequiresBuildingInAllCities
.apply { errorMessage = "Requires a [${civInfo.getEquivalentBuilding(requiredBuildingInAllCities!!)}] in all cities"})
}
if (civInfo.cities.any { it != cityConstructions.cityInfo && it.cityConstructions.isBeingConstructedOrEnqueued(name) })
rejectionReasons.add(RejectionReason.NationalWonderBeingBuiltElsewhere)
if (civInfo.cities.any { it != cityConstructions.cityInfo && it.cityConstructions.isBeingConstructedOrEnqueued(name) })
rejectionReasons.add(RejectionReason.NationalWonderBeingBuiltElsewhere)
if (civInfo.isCityState())
rejectionReasons.add(RejectionReason.CityStateNationalWonder)
}
if (civInfo.isCityState())
rejectionReasons.add(RejectionReason.CityStateNationalWonder)
}
if (hasUnique(UniqueType.SpaceshipPart)) {

View File

@ -22,6 +22,7 @@ import com.unciv.models.stats.INamed
import com.unciv.models.stats.NamedStats
import com.unciv.models.stats.Stat
import com.unciv.models.stats.Stats
import com.unciv.models.translations.fillPlaceholders
import com.unciv.models.translations.tr
import com.unciv.ui.utils.colorFromRGB
import kotlin.collections.set
@ -179,6 +180,9 @@ class Ruleset {
val buildingsFile = folderHandle.child("Buildings.json")
if (buildingsFile.exists()) buildings += createHashmap(jsonParser.getFromJson(Array<Building>::class.java, buildingsFile))
for(building in buildings.values)
if(building.requiredBuildingInAllCities != null)
building.uniques.add(UniqueType.RequiresBuildingInAllCities.text.fillPlaceholders(building.requiredBuildingInAllCities!!))
val terrainsFile = folderHandle.child("Terrains.json")
if (terrainsFile.exists()) {
@ -491,8 +495,9 @@ class Ruleset {
lines += "${building.name} replaces ${building.replaces} which does not exist!"
if (building.requiredBuilding != null && !buildings.containsKey(building.requiredBuilding!!))
lines += "${building.name} requires ${building.requiredBuilding} which does not exist!"
if (building.requiredBuildingInAllCities != null && !buildings.containsKey(building.requiredBuildingInAllCities!!))
lines += "${building.name} requires ${building.requiredBuildingInAllCities} in all cities which does not exist!"
if (building.requiredBuildingInAllCities != null)
lines.add("${building.name} contains 'requiredBuildingInAllCities' - please convert to a \"" +
UniqueType.RequiresBuildingInAllCities.text.fillPlaceholders(building.requiredBuildingInAllCities!!)+"\" unique", RulesetErrorSeverity.Warning)
for (unique in building.uniqueObjects)
if (unique.placeholderText == "Creates a [] improvement on a specific tile" && !tileImprovements.containsKey(unique.params[0]))
lines += "${building.name} creates a ${unique.params[0]} improvement which does not exist!"