Unified errorSeverityForFilter checks into single function, we have a LOT of filters!

This commit is contained in:
Yair Morgenstern 2023-11-19 00:10:08 +02:00
parent fb1e57668e
commit 62687c2230

View File

@ -85,11 +85,7 @@ enum class UniqueParameterType(
"City-State", Constants.embarked, "Non-City") "City-State", Constants.embarked, "Non-City")
override fun getErrorSeverity(parameterText: String, ruleset: Ruleset): override fun getErrorSeverity(parameterText: String, ruleset: Ruleset):
UniqueType.UniqueParameterErrorSeverity? { UniqueType.UniqueParameterErrorSeverity? = getErrorSeverityForFilter(parameterText, ruleset)
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 { override fun isKnownValue(parameterText:String, ruleset: Ruleset): Boolean {
if (parameterText in knownValues) return true if (parameterText in knownValues) return true
@ -109,11 +105,8 @@ enum class UniqueParameterType(
"relevant", // used for UniqueType.UnitStartingPromotions "relevant", // used for UniqueType.UnitStartingPromotions
) )
override fun getErrorSeverity(parameterText: String, ruleset: Ruleset): override fun getErrorSeverity(parameterText: String, ruleset: Ruleset):
UniqueType.UniqueParameterErrorSeverity? { UniqueType.UniqueParameterErrorSeverity? = getErrorSeverityForFilter(parameterText, ruleset)
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 { override fun isKnownValue(parameterText:String, ruleset: Ruleset): Boolean {
if (parameterText in knownValues) return true if (parameterText in knownValues) return true
if (UnitName.getErrorSeverity(parameterText, ruleset) == null) return true if (UnitName.getErrorSeverity(parameterText, ruleset) == null) return true
@ -128,13 +121,8 @@ enum class UniqueParameterType(
private val knownValues = setOf( private val knownValues = setOf(
"Land", "Water", "Air", "Land", "Water", "Air",
) )
override fun getErrorSeverity(parameterText: String, ruleset: Ruleset): override fun getErrorSeverity(parameterText: String, ruleset: Ruleset):
UniqueType.UniqueParameterErrorSeverity? { UniqueType.UniqueParameterErrorSeverity? = getErrorSeverityForFilter(parameterText, ruleset)
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 { override fun isKnownValue(parameterText: String, ruleset: Ruleset): Boolean {
if (parameterText in knownValues) return true if (parameterText in knownValues) return true
@ -205,11 +193,8 @@ enum class UniqueParameterType(
CivFilter("civFilter", Constants.cityStates) { CivFilter("civFilter", Constants.cityStates) {
private val knownValues = setOf("AI player", "Human player") private val knownValues = setOf("AI player", "Human player")
override fun getErrorSeverity(parameterText: String, ruleset: Ruleset): UniqueType.UniqueParameterErrorSeverity? { override fun getErrorSeverity(parameterText: String, ruleset: Ruleset):
val isKnown = MultiFilter.multiFilter(parameterText, {isKnownValue(it, ruleset)}, true) UniqueType.UniqueParameterErrorSeverity? = getErrorSeverityForFilter(parameterText, ruleset)
if (isKnown) return null
return UniqueType.UniqueParameterErrorSeverity.PossibleFilteringUnique
}
override fun isKnownValue(parameterText: String, ruleset: Ruleset): Boolean { override fun isKnownValue(parameterText: String, ruleset: Ruleset): Boolean {
if (parameterText in knownValues) return true if (parameterText in knownValues) return true
@ -222,14 +207,8 @@ enum class UniqueParameterType(
NationFilter("nationFilter", Constants.cityStates) { NationFilter("nationFilter", Constants.cityStates) {
private val knownValues = setOf(Constants.cityStates, "Major", "All") private val knownValues = setOf(Constants.cityStates, "Major", "All")
override fun getErrorSeverity( override fun getErrorSeverity(parameterText: String, ruleset: Ruleset):
parameterText: String, UniqueType.UniqueParameterErrorSeverity? = getErrorSeverityForFilter(parameterText, ruleset)
ruleset: 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 { override fun isKnownValue(parameterText: String, ruleset: Ruleset): Boolean {
if (parameterText in knownValues) return true if (parameterText in knownValues) return true
@ -286,14 +265,8 @@ enum class UniqueParameterType(
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()) } .apply { addAll(Stat.names()) }
override fun getErrorSeverity( override fun getErrorSeverity(parameterText: String, ruleset: Ruleset):
parameterText: String, UniqueType.UniqueParameterErrorSeverity? = getErrorSeverityForFilter(parameterText, ruleset)
ruleset: 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 { override fun isKnownValue(parameterText: String, ruleset: Ruleset): Boolean {
if (parameterText in knownValues) return true if (parameterText in knownValues) return true
@ -330,11 +303,8 @@ enum class UniqueParameterType(
) + ) +
ResourceType.values().map { it.name + " resource" } ResourceType.values().map { it.name + " resource" }
override fun getErrorSeverity(parameterText: String, ruleset: Ruleset): UniqueType.UniqueParameterErrorSeverity? { override fun getErrorSeverity(parameterText: String, ruleset: Ruleset):
val isKnown = MultiFilter.multiFilter(parameterText, {isKnownValue(it, ruleset)}, true) UniqueType.UniqueParameterErrorSeverity? = getErrorSeverityForFilter(parameterText, ruleset)
if (isKnown) return null
return UniqueType.UniqueParameterErrorSeverity.PossibleFilteringUnique
}
override fun isKnownValue(parameterText: String, ruleset: Ruleset): Boolean { override fun isKnownValue(parameterText: String, ruleset: Ruleset): Boolean {
return when (parameterText) { return when (parameterText) {
@ -356,12 +326,9 @@ enum class UniqueParameterType(
/** Implemented by [Tile.matchesFilter][com.unciv.logic.map.tile.Tile.matchesFilter] */ /** Implemented by [Tile.matchesFilter][com.unciv.logic.map.tile.Tile.matchesFilter] */
TileFilter("tileFilter", "Farm", "Anything that can be used either in an improvementFilter or in a terrainFilter can be used here, plus 'unimproved'", "Tile Filters") { 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") private val knownValues = setOf("unimproved", "All Road", "Great Improvement")
override fun getErrorSeverity(parameterText: String, ruleset: Ruleset): override fun getErrorSeverity(parameterText: String, ruleset: Ruleset):
UniqueType.UniqueParameterErrorSeverity? { UniqueType.UniqueParameterErrorSeverity? = getErrorSeverityForFilter(parameterText, ruleset)
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 { override fun isKnownValue(parameterText: String, ruleset: Ruleset): Boolean {
if (parameterText in knownValues) return true if (parameterText in knownValues) return true
@ -462,12 +429,9 @@ enum class UniqueParameterType(
/** Implemented by [TileImprovement.matchesFilter][com.unciv.models.ruleset.tile.TileImprovement.matchesFilter] */ /** Implemented by [TileImprovement.matchesFilter][com.unciv.models.ruleset.tile.TileImprovement.matchesFilter] */
ImprovementFilter("improvementFilter", "All Road", null, "Improvement Filters") { ImprovementFilter("improvementFilter", "All Road", null, "Improvement Filters") {
private val knownValues = setOf("All", "Improvement", "All Road", "Great Improvement", "Great") private val knownValues = setOf("All", "Improvement", "All Road", "Great Improvement", "Great")
override fun getErrorSeverity(parameterText: String, ruleset: Ruleset): override fun getErrorSeverity(parameterText: String, ruleset: Ruleset):
UniqueType.UniqueParameterErrorSeverity? { UniqueType.UniqueParameterErrorSeverity? = getErrorSeverityForFilter(parameterText, ruleset)
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 { override fun isKnownValue(parameterText: String, ruleset: Ruleset): Boolean {
if (parameterText in knownValues) return true if (parameterText in knownValues) return true
@ -628,6 +592,12 @@ enum class UniqueParameterType(
open fun isKnownValue(parameterText: String, ruleset: Ruleset): Boolean = false open fun isKnownValue(parameterText: String, ruleset: Ruleset): Boolean = false
fun getErrorSeverityForFilter(parameterText: String, ruleset: Ruleset): UniqueType.UniqueParameterErrorSeverity? {
val isKnown = MultiFilter.multiFilter(parameterText, {isKnownValue(it, ruleset)}, true)
if (isKnown) return null
return UniqueType.UniqueParameterErrorSeverity.PossibleFilteringUnique
}
/** Pick this type when [TranslationFileWriter] tries to guess for an untyped [Unique] */ /** Pick this type when [TranslationFileWriter] tries to guess for an untyped [Unique] */
open fun isTranslationWriterGuess(parameterText: String, ruleset: Ruleset): Boolean = open fun isTranslationWriterGuess(parameterText: String, ruleset: Ruleset): Boolean =
getErrorSeverity(parameterText, ruleset) == null getErrorSeverity(parameterText, ruleset) == null