From 167f25cacd45d9c349296814c3555460616061d2 Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Sat, 18 Nov 2023 22:34:04 +0200 Subject: [PATCH] Modding: Added "non-[filter]" and multi-value filtering to Tile filter --- .../models/ruleset/unique/UniqueParameterType.kt | 16 ++++++++++++---- docs/Modders/Unique-parameters.md | 2 +- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/core/src/com/unciv/models/ruleset/unique/UniqueParameterType.kt b/core/src/com/unciv/models/ruleset/unique/UniqueParameterType.kt index fe2100fb56..8f4ccdf9df 100644 --- a/core/src/com/unciv/models/ruleset/unique/UniqueParameterType.kt +++ b/core/src/com/unciv/models/ruleset/unique/UniqueParameterType.kt @@ -357,11 +357,19 @@ enum class UniqueParameterType( TileFilter("tileFilter", "Farm", "Anything that can be used either in an improvementFilter or in a terrainFilter can be used here, plus 'unimproved'", "Tile Filters") { private val knownValues = setOf("unimproved", "All Road", "Great Improvement") override fun getErrorSeverity(parameterText: String, ruleset: Ruleset): - UniqueType.UniqueParameterErrorSeverity? { - if (parameterText in knownValues) return null - if (ImprovementFilter.getErrorSeverity(parameterText, ruleset) == null) return null - return TerrainFilter.getErrorSeverity(parameterText, ruleset) + UniqueType.UniqueParameterErrorSeverity? { + 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 (ImprovementFilter.isKnownValue(parameterText, ruleset)) return true + if (TerrainFilter.isKnownValue(parameterText, ruleset)) return true + return false + } + override fun getTranslationWriterStringsForOutput() = knownValues }, diff --git a/docs/Modders/Unique-parameters.md b/docs/Modders/Unique-parameters.md index 14213ffaf1..5826c5f994 100644 --- a/docs/Modders/Unique-parameters.md +++ b/docs/Modders/Unique-parameters.md @@ -11,7 +11,7 @@ Note that all of these are case-sensitive! ## General Filter Rules -- All filters accept multiple values in the format: `{A} {B} {C}` etc, meaning "the object must match ALL of these filters" +- All filters except for `cityFilter` and `populationFilter` accept multiple values in the format: `{A} {B} {C}` etc, meaning "the object must match ALL of these filters" - For example: `[{Military} {Water}] units`, `[{Wounded} {Armor}] units`, etc. - No space or other text is allowed between the `[` and the first `{`. - All filters accept `non-[filter]` as a possible value