Merge branch 'civfilter-diplomacy' of github.com:RobLoach/Unciv into add-great-admiral

This commit is contained in:
Rob Loach 2025-09-13 14:38:58 -04:00
commit 13d0c3c025
No known key found for this signature in database
GPG Key ID: 627C60834A74A21A
3 changed files with 9 additions and 3 deletions

View File

@ -16,6 +16,7 @@ import com.unciv.logic.civilization.diplomacy.CityStatePersonality
import com.unciv.logic.civilization.diplomacy.DiplomacyFunctions
import com.unciv.logic.civilization.diplomacy.DiplomacyManager
import com.unciv.logic.civilization.diplomacy.DiplomaticStatus
import com.unciv.logic.civilization.diplomacy.RelationshipLevel
import com.unciv.logic.civilization.managers.EspionageManager
import com.unciv.logic.civilization.managers.GoldenAgeManager
import com.unciv.logic.civilization.managers.GreatPersonManager
@ -576,6 +577,9 @@ class Civilization : IsPartOfGameInfoSerialization {
return when (filter) {
"Human player" -> isHuman()
"AI player" -> isAI()
"Open Borders" -> state?.civInfo?.diplomacy[civName]?.hasOpenBorders ?: false
"Friendly" -> state?.civInfo?.let { it.civName == civName || (it.diplomacy[civName]?.isRelationshipLevelGE(RelationshipLevel.Friend) == true) } ?: false
"Hostile" -> state?.civInfo?.let { isAtWarWith(it) } ?: false
else -> nation.matchesFilter(filter, state, false)
}
}

View File

@ -168,11 +168,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

@ -216,7 +216,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", "Friendly", "Hostile")
override fun getErrorSeverity(parameterText: String, ruleset: Ruleset) = getErrorSeverityForFilter(parameterText, ruleset)