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

View File

@ -141,6 +141,9 @@ enum class UniqueType(val text:String, vararg targets: UniqueTarget) {
///////////////////////////////////////// BUILDING UNIQUES ///////////////////////////////////////// ///////////////////////////////////////// BUILDING UNIQUES /////////////////////////////////////////
Unbuildable("Unbuildable", UniqueTarget.Building), 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),