mirror of
https://github.com/yairm210/Unciv.git
synced 2025-07-15 10:18:26 +07:00
Modding: Added "non-[filter]" and multi-value filtering to Improvement filter
This commit is contained in:
@ -2,6 +2,7 @@ package com.unciv.models.ruleset.tile
|
|||||||
|
|
||||||
import com.unciv.Constants
|
import com.unciv.Constants
|
||||||
import com.unciv.UncivGame
|
import com.unciv.UncivGame
|
||||||
|
import com.unciv.logic.MultiFilter
|
||||||
import com.unciv.logic.civilization.Civilization
|
import com.unciv.logic.civilization.Civilization
|
||||||
import com.unciv.logic.map.mapunit.MapUnit
|
import com.unciv.logic.map.mapunit.MapUnit
|
||||||
import com.unciv.logic.map.tile.RoadStatus
|
import com.unciv.logic.map.tile.RoadStatus
|
||||||
@ -87,6 +88,10 @@ class TileImprovement : RulesetStatsObject() {
|
|||||||
|
|
||||||
/** Implements [UniqueParameterType.ImprovementFilter][com.unciv.models.ruleset.unique.UniqueParameterType.ImprovementFilter] */
|
/** Implements [UniqueParameterType.ImprovementFilter][com.unciv.models.ruleset.unique.UniqueParameterType.ImprovementFilter] */
|
||||||
fun matchesFilter(filter: String): Boolean {
|
fun matchesFilter(filter: String): Boolean {
|
||||||
|
return MultiFilter.multiFilter(filter, ::matchesSingleFilter)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun matchesSingleFilter(filter: String): Boolean {
|
||||||
return when (filter) {
|
return when (filter) {
|
||||||
name -> true
|
name -> true
|
||||||
"All" -> true
|
"All" -> true
|
||||||
|
@ -455,14 +455,22 @@ enum class UniqueParameterType(
|
|||||||
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? {
|
||||||
if (parameterText in knownValues) return null
|
val isKnown = MultiFilter.multiFilter(parameterText, {isKnownValue(it, ruleset)}, true)
|
||||||
if (ImprovementName.getErrorSeverity(parameterText, ruleset) == null) return null
|
if (isKnown) return null
|
||||||
if (ruleset.tileImprovements.values.any { it.hasUnique(parameterText) }) return null
|
|
||||||
return UniqueType.UniqueParameterErrorSeverity.PossibleFilteringUnique
|
return UniqueType.UniqueParameterErrorSeverity.PossibleFilteringUnique
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun isKnownValue(parameterText: String, ruleset: Ruleset): Boolean {
|
||||||
|
if (parameterText in knownValues) return true
|
||||||
|
if (ImprovementName.getErrorSeverity(parameterText, ruleset) == null) return true
|
||||||
|
if (ruleset.tileImprovements.values.any { it.hasUnique(parameterText) }) return true
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
override fun isTranslationWriterGuess(parameterText: String, ruleset: Ruleset) =
|
override fun isTranslationWriterGuess(parameterText: String, ruleset: Ruleset) =
|
||||||
parameterText != "All" && getErrorSeverity(parameterText, ruleset) == null
|
parameterText != "All" && getErrorSeverity(parameterText, ruleset) == null
|
||||||
|
|
||||||
override fun getTranslationWriterStringsForOutput() = knownValues
|
override fun getTranslationWriterStringsForOutput() = knownValues
|
||||||
},
|
},
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user