mirror of
https://github.com/yairm210/Unciv.git
synced 2025-07-13 17:28:57 +07:00
Modding: Added "non-[filter]" and multi-value filtering to Nation and Civ filters
This commit is contained in:
@ -5,6 +5,7 @@ import com.unciv.Constants
|
||||
import com.unciv.json.HashMapVector2
|
||||
import com.unciv.logic.GameInfo
|
||||
import com.unciv.logic.IsPartOfGameInfoSerialization
|
||||
import com.unciv.logic.MultiFilter
|
||||
import com.unciv.logic.UncivShowableException
|
||||
import com.unciv.logic.automation.ai.TacticalAI
|
||||
import com.unciv.logic.automation.unit.WorkerAutomation
|
||||
@ -491,6 +492,10 @@ class Civilization : IsPartOfGameInfoSerialization {
|
||||
}
|
||||
|
||||
fun matchesFilter(filter: String): Boolean {
|
||||
return MultiFilter.multiFilter(filter, ::matchesSingleFilter)
|
||||
}
|
||||
|
||||
fun matchesSingleFilter(filter: String): Boolean {
|
||||
return when (filter) {
|
||||
"Human player" -> isHuman()
|
||||
"AI player" -> isAI()
|
||||
|
@ -2,6 +2,7 @@ package com.unciv.models.ruleset.nation
|
||||
|
||||
import com.badlogic.gdx.graphics.Color
|
||||
import com.unciv.Constants
|
||||
import com.unciv.logic.MultiFilter
|
||||
import com.unciv.models.ruleset.Ruleset
|
||||
import com.unciv.models.ruleset.RulesetObject
|
||||
import com.unciv.models.ruleset.unique.UniqueTarget
|
||||
@ -253,6 +254,10 @@ class Nation : RulesetObject() {
|
||||
fun getContrastRatio() = getContrastRatio(getInnerColor(), getOuterColor())
|
||||
|
||||
fun matchesFilter(filter: String): Boolean {
|
||||
return MultiFilter.multiFilter(filter, ::matchesSingleFilter)
|
||||
}
|
||||
|
||||
fun matchesSingleFilter(filter: String): Boolean {
|
||||
return when (filter) {
|
||||
"All" -> true
|
||||
name -> true
|
||||
|
@ -206,8 +206,15 @@ enum class UniqueParameterType(
|
||||
private val knownValues = setOf("AI player", "Human player")
|
||||
|
||||
override fun getErrorSeverity(parameterText: String, ruleset: Ruleset): UniqueType.UniqueParameterErrorSeverity? {
|
||||
if (parameterText in knownValues) return null
|
||||
return NationFilter.getErrorSeverity(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 {
|
||||
if (parameterText in knownValues) return true
|
||||
if (NationFilter.isKnownValue(parameterText, ruleset)) return true
|
||||
return false
|
||||
}
|
||||
},
|
||||
|
||||
@ -219,11 +226,17 @@ enum class UniqueParameterType(
|
||||
parameterText: String,
|
||||
ruleset: Ruleset
|
||||
): UniqueType.UniqueParameterErrorSeverity? {
|
||||
if (parameterText in knownValues) return null
|
||||
if (ruleset.nations.containsKey(parameterText)) return null
|
||||
if (ruleset.nations.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 (ruleset.nations.containsKey(parameterText)) return true
|
||||
if (ruleset.nations.values.any { it.hasUnique(parameterText) }) return true
|
||||
return false
|
||||
}
|
||||
},
|
||||
|
||||
/** Implemented by [City.matchesFilter][com.unciv.logic.city.City.matchesFilter] */
|
||||
|
Reference in New Issue
Block a user