"<for [nationFilter]>" conditional added

This commit is contained in:
Yair Morgenstern 2023-04-08 22:46:49 +03:00
parent 7748ef42ab
commit 0d9cff0922
5 changed files with 29 additions and 0 deletions

View File

@ -302,7 +302,9 @@ class Nation : RulesetObject() {
"All" -> true
name -> true
"Major" -> isMajorCiv
// To be deprecated, replaced by "City-States"
"CityState" -> isCityState
Constants.cityStates -> isCityState
else -> uniques.contains(filter)
}
}

View File

@ -175,6 +175,21 @@ enum class UniqueParameterType(
}
},
/** Implemented by [Nation.matchesFilter][com.unciv.models.ruleset.Building.matchesFilter] */
NationFilter("nationFilter", Constants.cityStates) {
private val knownValues = setOf(Constants.cityStates, "Major", "All")
override fun getErrorSeverity(
parameterText: String,
ruleset: Ruleset
): UniqueType.UniqueComplianceErrorSeverity? {
if (parameterText in knownValues) return null
if (ruleset.nations.containsKey(parameterText)) return null
if (ruleset.nations.values.any { it.hasUnique(parameterText) }) return null
return UniqueType.UniqueComplianceErrorSeverity.RulesetSpecific
}
},
/** Implemented by [CityInfo.matchesFilter][com.unciv.logic.city.City.matchesFilter] */
CityFilter("cityFilter", "in all cities", null, "City filters") {
private val cityFilterStrings = setOf(

View File

@ -628,6 +628,7 @@ enum class UniqueType(val text: String, vararg targets: UniqueTarget, val flags:
/////// civ conditionals
ConditionalCivFilter("for [nationFilter]", UniqueTarget.Conditional),
ConditionalWar("when at war", UniqueTarget.Conditional),
ConditionalNotWar("when not at war", UniqueTarget.Conditional),
ConditionalGoldenAge("during a Golden Age", UniqueTarget.Conditional),

View File

@ -65,6 +65,7 @@ class SpecialistAllocationTable(val cityScreen: CityScreen) : Table(BaseScreen.s
else Color.GRAY // unassigned
val icon = ImageGetter.getSpecialistIcon(color)
specialistIconTable.add(icon).size(30f)
if (i % 6 == 0) specialistIconTable.row()
}
return specialistIconTable
}

View File

@ -53,6 +53,16 @@ Allows to only activate a unique for certain buildings. Allowed options are:
- Provides that stat as a bonus for resources (e.g. +1 Food from every Wheat)
- Provides that stat per some amount of population (e.g. +1 Science for every 2 population [cityFilter])
## nationFilter
Allows filtering for specific nations.
- `All`
- `City-states`
- `Major`
- Nation name
- Nation unique
## cityFilter
cityFilters allow us to choose the range of cities affected by this unique: