From ca706db753df99aa453021056cd38b48e6bace7e Mon Sep 17 00:00:00 2001 From: yairm210 Date: Sun, 17 Oct 2021 23:50:42 +0300 Subject: [PATCH] More typings for building specific uniques --- core/src/com/unciv/models/ruleset/Building.kt | 13 ++++++------- .../com/unciv/models/ruleset/unique/UniqueType.kt | 3 +++ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/core/src/com/unciv/models/ruleset/Building.kt b/core/src/com/unciv/models/ruleset/Building.kt index 296c54a629..02d161d114 100644 --- a/core/src/com/unciv/models/ruleset/Building.kt +++ b/core/src/com/unciv/models/ruleset/Building.kt @@ -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) { diff --git a/core/src/com/unciv/models/ruleset/unique/UniqueType.kt b/core/src/com/unciv/models/ruleset/unique/UniqueType.kt index 592b0bcd6c..6520507a21 100644 --- a/core/src/com/unciv/models/ruleset/unique/UniqueType.kt +++ b/core/src/com/unciv/models/ruleset/unique/UniqueType.kt @@ -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),