From 223e52fe32269cd306cd6833e063e7c4497f4400 Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Wed, 7 Oct 2020 14:17:50 +0300 Subject: [PATCH] "matches" is a more intuitive name than "fits" for filtering --- core/src/com/unciv/logic/GameStarter.kt | 4 ++-- core/src/com/unciv/logic/battle/BattleDamage.kt | 4 ++-- core/src/com/unciv/logic/map/TileInfo.kt | 8 ++++---- core/src/com/unciv/models/ruleset/Building.kt | 10 +++++----- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/core/src/com/unciv/logic/GameStarter.kt b/core/src/com/unciv/logic/GameStarter.kt index dfe9b6c919..6c018a3b3d 100644 --- a/core/src/com/unciv/logic/GameStarter.kt +++ b/core/src/com/unciv/logic/GameStarter.kt @@ -224,9 +224,9 @@ object GameStarter { for (startBias in civ.nation.startBias) { if (startBias.startsWith("Avoid ")) { val tileToAvoid = startBias.removePrefix("Avoid [").removeSuffix("]") - preferredTiles = preferredTiles.filter { !it.fitsUniqueFilter(tileToAvoid) } + preferredTiles = preferredTiles.filter { !it.matchesUniqueFilter(tileToAvoid) } } else if (startBias == Constants.coast) preferredTiles = preferredTiles.filter { it.isCoastalTile() } - else preferredTiles = preferredTiles.filter { it.fitsUniqueFilter(startBias) } + else preferredTiles = preferredTiles.filter { it.matchesUniqueFilter(startBias) } } startingLocation = if (preferredTiles.isNotEmpty()) preferredTiles.random() else freeTiles.random() diff --git a/core/src/com/unciv/logic/battle/BattleDamage.kt b/core/src/com/unciv/logic/battle/BattleDamage.kt index 31ef55f67f..b18a314a43 100644 --- a/core/src/com/unciv/logic/battle/BattleDamage.kt +++ b/core/src/com/unciv/logic/battle/BattleDamage.kt @@ -186,7 +186,7 @@ object BattleDamage { if (carrierDefenceBonus > 0) modifiers["Armor Plating"] = carrierDefenceBonus for(unique in defender.unit.getMatchingUniques("+[]% defence in [] tiles")) { - if (tile.fitsUniqueFilter(unique.params[1])) + if (tile.matchesUniqueFilter(unique.params[1])) modifiers["[${unique.params[1]}] defence"] = unique.params[0].toInt() } @@ -229,7 +229,7 @@ object BattleDamage { modifiers[tile.baseTerrain] = 25 for(unique in unit.getCivInfo().getMatchingUniques("+[]% Strength if within [] tiles of a []")) { - if (tile.getTilesInDistance(unique.params[1].toInt()).any { it.improvement == unique.params[2] }) + if (tile.getTilesInDistance(unique.params[1].toInt()).any { it.matchesUniqueFilter(unique.params[2]) }) modifiers[unique.params[2]] = unique.params[0].toInt() } diff --git a/core/src/com/unciv/logic/map/TileInfo.kt b/core/src/com/unciv/logic/map/TileInfo.kt index 1ae0e26316..1b52193781 100644 --- a/core/src/com/unciv/logic/map/TileInfo.kt +++ b/core/src/com/unciv/logic/map/TileInfo.kt @@ -27,7 +27,7 @@ open class TileInfo { // This will be called often - farm can be built on Hill and tundra if adjacent to fresh water // and farms on adjacent to fresh water tiles will have +1 additional Food after researching Civil Service @delegate:Transient - val isAdjacentToFreshwater: Boolean by lazy { fitsUniqueFilter("River") || fitsUniqueFilter("Fresh water") || neighbors.any { it.fitsUniqueFilter("Fresh water") } } + val isAdjacentToFreshwater: Boolean by lazy { matchesUniqueFilter("River") || matchesUniqueFilter("Fresh water") || neighbors.any { it.matchesUniqueFilter("Fresh water") } } var militaryUnit: MapUnit? = null var civilianUnit: MapUnit? = null @@ -190,7 +190,7 @@ open class TileInfo { val civWideUniques = city.civInfo.getMatchingUniques("[] from every []") for (unique in cityWideUniques + civWideUniques) { val tileType = unique.params[1] - if (fitsUniqueFilter(tileType) + if (matchesUniqueFilter(tileType) || (resource == tileType && hasViewableResource(observingCiv)) || (tileType == "Strategic resource" && hasViewableResource(observingCiv) && getTileResource().resourceType == ResourceType.Strategic) || (tileType == "Water resource" && isWater && hasViewableResource(observingCiv)) @@ -275,7 +275,7 @@ open class TileInfo { val adjacent = unique.params[1] val numberOfBonuses = neighbors.count { it.improvement == adjacent - || it.fitsUniqueFilter(adjacent) + || it.matchesUniqueFilter(adjacent) || it.roadStatus.name == adjacent } stats.add(Stats.parse(unique.params[0]).times(numberOfBonuses.toFloat())) @@ -320,7 +320,7 @@ open class TileInfo { } } - fun fitsUniqueFilter(filter:String): Boolean { + fun matchesUniqueFilter(filter:String): Boolean { return filter == baseTerrain || filter == Constants.hill && isHill() || filter == "River" && isAdjacentToRiver() diff --git a/core/src/com/unciv/models/ruleset/Building.kt b/core/src/com/unciv/models/ruleset/Building.kt index b72328cffa..a814331937 100644 --- a/core/src/com/unciv/models/ruleset/Building.kt +++ b/core/src/com/unciv/models/ruleset/Building.kt @@ -249,13 +249,13 @@ class Building : NamedStats(), IConstruction { return "Should not be displayed" for(unique in uniqueObjects) when (unique.placeholderText) { - "Must be on []" -> if (!cityCenter.fitsUniqueFilter(unique.params[0])) return unique.text - "Must not be on []" -> if (cityCenter.fitsUniqueFilter(unique.params[0])) return unique.text + "Must be on []" -> if (!cityCenter.matchesUniqueFilter(unique.params[0])) return unique.text + "Must not be on []" -> if (cityCenter.matchesUniqueFilter(unique.params[0])) return unique.text "Must be next to []" -> if (!(unique.params[0] == "Fresh water" && cityCenter.isAdjacentToRiver()) // Fresh water is special, in that rivers are not tiles themselves but also fit the filter.. - && cityCenter.getTilesInDistance(1).none { it.fitsUniqueFilter(unique.params[0])}) return unique.text - "Must not be next to []" -> if (cityCenter.getTilesInDistance(1).any { it.fitsUniqueFilter(unique.params[0]) }) return unique.text + && cityCenter.getTilesInDistance(1).none { it.matchesUniqueFilter(unique.params[0])}) return unique.text + "Must not be next to []" -> if (cityCenter.getTilesInDistance(1).any { it.matchesUniqueFilter(unique.params[0]) }) return unique.text "Must have an owned [] within [] tiles" -> if (cityCenter.getTilesInDistance(distance = unique.params[1].toInt()).none { - it.fitsUniqueFilter(unique.params[0]) && it.getOwner() == construction.cityInfo.civInfo }) return unique.text + it.matchesUniqueFilter(unique.params[0]) && it.getOwner() == construction.cityInfo.civInfo }) return unique.text "Can only be built in annexed cities" -> if (construction.cityInfo.isPuppet || construction.cityInfo.foundingCiv == "" || construction.cityInfo.civInfo.civName == construction.cityInfo.foundingCiv) return unique.text "Requires []" -> { val filter = unique.params[0]