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) {
|
for (startBias in civ.nation.startBias) {
|
||||||
if (startBias.startsWith("Avoid ")) {
|
if (startBias.startsWith("Avoid ")) {
|
||||||
val tileToAvoid = startBias.removePrefix("Avoid [").removeSuffix("]")
|
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 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()
|
startingLocation = if (preferredTiles.isNotEmpty()) preferredTiles.random() else freeTiles.random()
|
||||||
|
@ -186,7 +186,7 @@ object BattleDamage {
|
|||||||
if (carrierDefenceBonus > 0) modifiers["Armor Plating"] = carrierDefenceBonus
|
if (carrierDefenceBonus > 0) modifiers["Armor Plating"] = carrierDefenceBonus
|
||||||
|
|
||||||
for(unique in defender.unit.getMatchingUniques("+[]% defence in [] tiles")) {
|
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()
|
modifiers["[${unique.params[1]}] defence"] = unique.params[0].toInt()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -229,7 +229,7 @@ object BattleDamage {
|
|||||||
modifiers[tile.baseTerrain] = 25
|
modifiers[tile.baseTerrain] = 25
|
||||||
|
|
||||||
for(unique in unit.getCivInfo().getMatchingUniques("+[]% Strength if within [] tiles of a []")) {
|
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()
|
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
|
// 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
|
// and farms on adjacent to fresh water tiles will have +1 additional Food after researching Civil Service
|
||||||
@delegate:Transient
|
@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 militaryUnit: MapUnit? = null
|
||||||
var civilianUnit: MapUnit? = null
|
var civilianUnit: MapUnit? = null
|
||||||
@ -190,7 +190,7 @@ open class TileInfo {
|
|||||||
val civWideUniques = city.civInfo.getMatchingUniques("[] from every []")
|
val civWideUniques = city.civInfo.getMatchingUniques("[] from every []")
|
||||||
for (unique in cityWideUniques + civWideUniques) {
|
for (unique in cityWideUniques + civWideUniques) {
|
||||||
val tileType = unique.params[1]
|
val tileType = unique.params[1]
|
||||||
if (fitsUniqueFilter(tileType)
|
if (matchesUniqueFilter(tileType)
|
||||||
|| (resource == tileType && hasViewableResource(observingCiv))
|
|| (resource == tileType && hasViewableResource(observingCiv))
|
||||||
|| (tileType == "Strategic resource" && hasViewableResource(observingCiv) && getTileResource().resourceType == ResourceType.Strategic)
|
|| (tileType == "Strategic resource" && hasViewableResource(observingCiv) && getTileResource().resourceType == ResourceType.Strategic)
|
||||||
|| (tileType == "Water resource" && isWater && hasViewableResource(observingCiv))
|
|| (tileType == "Water resource" && isWater && hasViewableResource(observingCiv))
|
||||||
@ -275,7 +275,7 @@ open class TileInfo {
|
|||||||
val adjacent = unique.params[1]
|
val adjacent = unique.params[1]
|
||||||
val numberOfBonuses = neighbors.count {
|
val numberOfBonuses = neighbors.count {
|
||||||
it.improvement == adjacent
|
it.improvement == adjacent
|
||||||
|| it.fitsUniqueFilter(adjacent)
|
|| it.matchesUniqueFilter(adjacent)
|
||||||
|| it.roadStatus.name == adjacent
|
|| it.roadStatus.name == adjacent
|
||||||
}
|
}
|
||||||
stats.add(Stats.parse(unique.params[0]).times(numberOfBonuses.toFloat()))
|
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
|
return filter == baseTerrain
|
||||||
|| filter == Constants.hill && isHill()
|
|| filter == Constants.hill && isHill()
|
||||||
|| filter == "River" && isAdjacentToRiver()
|
|| filter == "River" && isAdjacentToRiver()
|
||||||
|
@ -249,13 +249,13 @@ class Building : NamedStats(), IConstruction {
|
|||||||
return "Should not be displayed"
|
return "Should not be displayed"
|
||||||
|
|
||||||
for(unique in uniqueObjects) when (unique.placeholderText) {
|
for(unique in uniqueObjects) when (unique.placeholderText) {
|
||||||
"Must 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.fitsUniqueFilter(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..
|
"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
|
&& cityCenter.getTilesInDistance(1).none { it.matchesUniqueFilter(unique.params[0])}) return unique.text
|
||||||
"Must not be next to []" -> if (cityCenter.getTilesInDistance(1).any { it.fitsUniqueFilter(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 {
|
"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 == ""
|
"Can only be built in annexed cities" -> if (construction.cityInfo.isPuppet || construction.cityInfo.foundingCiv == ""
|
||||||
|| construction.cityInfo.civInfo.civName == construction.cityInfo.foundingCiv) return unique.text
|
|| construction.cityInfo.civInfo.civName == construction.cityInfo.foundingCiv) return unique.text
|
||||||
"Requires []" -> { val filter = unique.params[0]
|
"Requires []" -> { val filter = unique.params[0]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user