mirror of
https://github.com/yairm210/Unciv.git
synced 2025-02-21 20:18:28 +07:00
Modding: Added "non-[filter]" and multi-value filtering to Building filter
This commit is contained in:
parent
68fd3d74b3
commit
2a862aa895
@ -1,5 +1,6 @@
|
||||
package com.unciv.models.ruleset
|
||||
|
||||
import com.unciv.logic.MultiFilter
|
||||
import com.unciv.logic.city.City
|
||||
import com.unciv.logic.city.CityConstructions
|
||||
import com.unciv.logic.civilization.Civilization
|
||||
@ -435,6 +436,10 @@ class Building : RulesetStatsObject(), INonPerpetualConstruction {
|
||||
|
||||
/** Implements [UniqueParameterType.BuildingFilter] */
|
||||
fun matchesFilter(filter: String): Boolean {
|
||||
return MultiFilter.multiFilter(filter, ::matchesSingleFilter)
|
||||
}
|
||||
|
||||
fun matchesSingleFilter(filter: String): Boolean {
|
||||
return when (filter) {
|
||||
"All" -> true
|
||||
name -> true
|
||||
|
@ -283,18 +283,25 @@ enum class UniqueParameterType(
|
||||
|
||||
/** Implemented by [Building.matchesFilter][com.unciv.models.ruleset.Building.matchesFilter] */
|
||||
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()) }
|
||||
|
||||
override fun getErrorSeverity(
|
||||
parameterText: String,
|
||||
ruleset: Ruleset
|
||||
): UniqueType.UniqueParameterErrorSeverity? {
|
||||
if (parameterText in knownValues) return null
|
||||
if (BuildingName.getErrorSeverity(parameterText, ruleset) == null) return null
|
||||
if (ruleset.buildings.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 (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) =
|
||||
parameterText != "All" && getErrorSeverity(parameterText, ruleset) == null
|
||||
},
|
||||
|
Loading…
Reference in New Issue
Block a user