Add diplomacy status to civFilter

This commit is contained in:
Rob Loach 2025-08-30 02:59:43 -04:00
parent a7de6744ae
commit f42a732960
No known key found for this signature in database
GPG Key ID: 627C60834A74A21A
3 changed files with 8 additions and 3 deletions

View File

@ -573,6 +573,9 @@ class Civilization : IsPartOfGameInfoSerialization {
return when (filter) {
"Human player" -> isHuman()
"AI player" -> isAI()
"Open Borders" -> state?.civInfo?.diplomacy[civName]?.hasOpenBorders ?: false
"Peace" -> state?.civInfo?.let { !diplomacyFunctions.isAtWarWith(it) } ?: false
"War" -> state?.civInfo?.let { diplomacyFunctions.isAtWarWith(it) } ?: false
else -> nation.matchesFilter(filter, state, false)
}
}

View File

@ -153,11 +153,13 @@ enum class Countables(
override fun eval(parameterText: String, gameContext: GameContext): Int? {
val filter = parameterText.getPlaceholderParameters()[0]
val civilizations = gameContext.gameInfo?.civilizations ?: return null
return civilizations.count { it.isAlive() && it.matchesFilter(filter) }
return civilizations.count { it.isAlive() && it.matchesFilter(filter, gameContext) }
}
override fun getErrorSeverity(parameterText: String, ruleset: Ruleset): UniqueType.UniqueParameterErrorSeverity? =
UniqueParameterType.CivFilter.getTranslatedErrorSeverity(parameterText, ruleset)
override fun getKnownValuesForAutocomplete(ruleset: Ruleset) = setOf<String>()
override fun getKnownValuesForAutocomplete(ruleset: Ruleset): Set<String> =
UniqueParameterType.CivFilter.getKnownValuesForAutocomplete(ruleset)
.map { text.fillPlaceholders(it) }.toSet()
},
OwnedTiles("Owned [tileFilter] Tiles") {
override fun eval(parameterText: String, gameContext: GameContext): Int? {

View File

@ -215,7 +215,7 @@ enum class UniqueParameterType(
/** Implemented by [Civ.matchesFilter][com.unciv.logic.civilization.Civilization.matchesFilter] */
CivFilter("civFilter", Constants.cityStates) {
override val staticKnownValues = setOf("AI player", "Human player")
override val staticKnownValues = setOf("AI player", "Human player", "Open Borders", "Peace", "War")
override fun getErrorSeverity(parameterText: String, ruleset: Ruleset) = getErrorSeverityForFilter(parameterText, ruleset)