diff --git a/core/src/com/unciv/models/ruleset/Building.kt b/core/src/com/unciv/models/ruleset/Building.kt index 9393d02f67..dfe2112a77 100644 --- a/core/src/com/unciv/models/ruleset/Building.kt +++ b/core/src/com/unciv/models/ruleset/Building.kt @@ -1,5 +1,6 @@ package com.unciv.models.ruleset +import com.unciv.logic.MultiFilter import com.unciv.logic.city.City import com.unciv.logic.city.CityConstructions import com.unciv.logic.civilization.Civilization @@ -435,6 +436,10 @@ class Building : RulesetStatsObject(), INonPerpetualConstruction { /** Implements [UniqueParameterType.BuildingFilter] */ fun matchesFilter(filter: String): Boolean { + return MultiFilter.multiFilter(filter, ::matchesSingleFilter) + } + + fun matchesSingleFilter(filter: String): Boolean { return when (filter) { "All" -> true name -> true diff --git a/core/src/com/unciv/models/ruleset/unique/UniqueParameterType.kt b/core/src/com/unciv/models/ruleset/unique/UniqueParameterType.kt index cc4e9116d7..275154b0b7 100644 --- a/core/src/com/unciv/models/ruleset/unique/UniqueParameterType.kt +++ b/core/src/com/unciv/models/ruleset/unique/UniqueParameterType.kt @@ -283,18 +283,25 @@ enum class UniqueParameterType( /** Implemented by [Building.matchesFilter][com.unciv.models.ruleset.Building.matchesFilter] */ BuildingFilter("buildingFilter", "Culture") { - private val knownValues = mutableSetOf("All","Building","Buildings","Wonder","Wonders","National Wonder","World Wonder") + private val knownValues = mutableSetOf("All", "Building", "Buildings", "Wonder", "Wonders", "National Wonder", "World Wonder") .apply { addAll(Stat.names()) } + override fun getErrorSeverity( parameterText: String, ruleset: Ruleset ): UniqueType.UniqueParameterErrorSeverity? { - if (parameterText in knownValues) return null - if (BuildingName.getErrorSeverity(parameterText, ruleset) == null) return null - if (ruleset.buildings.values.any { it.hasUnique(parameterText) }) return null + val isKnown = MultiFilter.multiFilter(parameterText, {isKnownValue(it, ruleset)}, true) + if (isKnown) return null return UniqueType.UniqueParameterErrorSeverity.PossibleFilteringUnique } + override fun isKnownValue(parameterText: String, ruleset: Ruleset): Boolean { + if (parameterText in knownValues) return true + if (BuildingName.getErrorSeverity(parameterText, ruleset) == null) return true + if (ruleset.buildings.values.any { it.hasUnique(parameterText) }) return true + return false + } + override fun isTranslationWriterGuess(parameterText: String, ruleset: Ruleset) = parameterText != "All" && getErrorSeverity(parameterText, ruleset) == null },