Modding: Added "non-[filter]" and multi-value filtering to Tile filter

This commit is contained in:
Yair Morgenstern
2023-11-18 22:34:04 +02:00
parent ddf8b449b3
commit 167f25cacd
2 changed files with 13 additions and 5 deletions

View File

@ -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
},

View File

@ -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