"matches" is a more intuitive name than "fits" for filtering

This commit is contained in:
Yair Morgenstern 2020-10-07 14:17:50 +03:00
parent a485ad5fa5
commit 223e52fe32
4 changed files with 13 additions and 13 deletions

View File

@ -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()

View File

@ -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()
}

View File

@ -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()

View File

@ -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]