mirror of
https://github.com/yairm210/Unciv.git
synced 2025-07-09 15:29:32 +07:00
Modding: Added "non-[filter]" and multi-value filtering to Building filter
This commit is contained in:
@ -1,5 +1,6 @@
|
|||||||
package com.unciv.models.ruleset
|
package com.unciv.models.ruleset
|
||||||
|
|
||||||
|
import com.unciv.logic.MultiFilter
|
||||||
import com.unciv.logic.city.City
|
import com.unciv.logic.city.City
|
||||||
import com.unciv.logic.city.CityConstructions
|
import com.unciv.logic.city.CityConstructions
|
||||||
import com.unciv.logic.civilization.Civilization
|
import com.unciv.logic.civilization.Civilization
|
||||||
@ -435,6 +436,10 @@ class Building : RulesetStatsObject(), INonPerpetualConstruction {
|
|||||||
|
|
||||||
/** Implements [UniqueParameterType.BuildingFilter] */
|
/** Implements [UniqueParameterType.BuildingFilter] */
|
||||||
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) {
|
||||||
"All" -> true
|
"All" -> true
|
||||||
name -> true
|
name -> true
|
||||||
|
@ -285,16 +285,23 @@ enum class UniqueParameterType(
|
|||||||
BuildingFilter("buildingFilter", "Culture") {
|
BuildingFilter("buildingFilter", "Culture") {
|
||||||
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,
|
parameterText: String,
|
||||||
ruleset: Ruleset
|
ruleset: Ruleset
|
||||||
): UniqueType.UniqueParameterErrorSeverity? {
|
): UniqueType.UniqueParameterErrorSeverity? {
|
||||||
if (parameterText in knownValues) return null
|
val isKnown = MultiFilter.multiFilter(parameterText, {isKnownValue(it, ruleset)}, true)
|
||||||
if (BuildingName.getErrorSeverity(parameterText, ruleset) == null) return null
|
if (isKnown) return null
|
||||||
if (ruleset.buildings.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 (BuildingName.getErrorSeverity(parameterText, ruleset) == null) return true
|
||||||
|
if (ruleset.buildings.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
|
||||||
},
|
},
|
||||||
|
Reference in New Issue
Block a user