mirror of
https://github.com/yairm210/Unciv.git
synced 2025-09-28 14:24:43 -04:00
"matches" is a more intuitive name than "fits" for filtering
This commit is contained in:
parent
a485ad5fa5
commit
223e52fe32
@ -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()
|
||||
|
@ -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()
|
||||
}
|
||||
|
||||
|
@ -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()
|
||||
|
@ -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]
|
||||
|
Loading…
x
Reference in New Issue
Block a user