More typings for building specific uniques

This commit is contained in:
yairm210
2021-10-17 23:50:42 +03:00
parent ed224d257a
commit ca706db753
2 changed files with 9 additions and 7 deletions

View File

@ -321,7 +321,7 @@ class Building : RulesetStatsObject(), INonPerpetualConstruction {
override fun getProductionCost(civInfo: CivilizationInfo): Int {
var productionCost = cost.toFloat()
for (unique in uniqueObjects.filter { it.placeholderText == "Cost increases by [] per owned city" })
for (unique in uniqueObjects.filter { it.isOfType(UniqueType.CostIncreasesPerCity) })
productionCost += civInfo.cities.count() * unique.params[0].toInt()
if (civInfo.isCityState())
@ -555,7 +555,7 @@ class Building : RulesetStatsObject(), INonPerpetualConstruction {
}
for (unique in uniqueObjects) when (unique.placeholderText) {
"Requires a [] in this city" -> {
UniqueType.RequiresAnotherBuilding.text -> {
val filter = unique.params[0]
if (civInfo.gameInfo.ruleSet.buildings.containsKey(filter) && !cityConstructions.containsBuildingOrEquivalent(filter))
rejectionReasons.add(
@ -602,11 +602,10 @@ class Building : RulesetStatsObject(), INonPerpetualConstruction {
)
}
}
val cannotBeBuiltWith = uniqueObjects
.firstOrNull { it.placeholderText == "Cannot be built with []" }
?.params?.get(0)
if (cannotBeBuiltWith != null && cityConstructions.isBuilt(cannotBeBuiltWith))
rejectionReasons.add(RejectionReason.CannotBeBuiltWith.apply { errorMessage = "Cannot be built with [$cannotBeBuiltWith]" })
val cannotBeBuiltWithUnique = uniqueObjects
.firstOrNull { it.isOfType(UniqueType.CannotBeBuiltWith) }
if (cannotBeBuiltWithUnique != null && cityConstructions.isBuilt(cannotBeBuiltWithUnique.params[0]))
rejectionReasons.add(RejectionReason.CannotBeBuiltWith.apply { errorMessage = cannotBeBuiltWithUnique.text })
for ((resource, amount) in getResourceRequirements())
if (civInfo.getCivResourcesByName()[resource]!! < amount) {

View File

@ -141,6 +141,9 @@ enum class UniqueType(val text:String, vararg targets: UniqueTarget) {
///////////////////////////////////////// BUILDING UNIQUES /////////////////////////////////////////
Unbuildable("Unbuildable", UniqueTarget.Building),
CostIncreasesPerCity("Cost increases by [amount] per owned city", UniqueTarget.Building),
CannotBeBuiltWith("Cannot be built with [buildingName]", UniqueTarget.Building),
RequiresAnotherBuilding("Requires a [buildingName] in this city", UniqueTarget.Building),