mirror of
https://github.com/yairm210/Unciv.git
synced 2025-02-20 19:56:51 +01:00
Deprecation of requiredBuildingInAllCities (#5922)
* Deprecation of requiredBuildingInAllCities * Should be a warning not an error
This commit is contained in:
parent
fc287bd9f3
commit
598f39e567
|
|
@ -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)) {
|
||||
|
|
|
|||
|
|
@ -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!"
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user