mirror of
https://github.com/yairm210/Unciv.git
synced 2025-09-26 13:27:22 -04:00
tileFilter now works with resources for most uniques!
This commit is contained in:
parent
92b82b22b0
commit
3d8e7fa99d
@ -206,8 +206,7 @@ open class TileInfo {
|
||||
for (unique in cityWideUniques + civWideUniques) {
|
||||
val tileType = unique.params[1]
|
||||
if (tileType == improvement) continue // This is added to the calculation in getImprovementStats. we don't want to add it twice
|
||||
if (matchesUniqueFilter(tileType)
|
||||
|| (resource == tileType && hasViewableResource(observingCiv))
|
||||
if (matchesUniqueFilter(tileType, observingCiv)
|
||||
|| (tileType == "Strategic resource" && hasViewableResource(observingCiv) && getTileResource().resourceType == ResourceType.Strategic)
|
||||
|| (tileType == "Luxury resource" && hasViewableResource(observingCiv) && getTileResource().resourceType == ResourceType.Luxury)
|
||||
|| (tileType == "Bonus resource" && hasViewableResource(observingCiv) && getTileResource().resourceType == ResourceType.Bonus)
|
||||
@ -289,7 +288,7 @@ open class TileInfo {
|
||||
val adjacent = unique.params[1]
|
||||
val numberOfBonuses = neighbors.count {
|
||||
it.improvement == adjacent
|
||||
|| it.matchesUniqueFilter(adjacent)
|
||||
|| it.matchesUniqueFilter(adjacent, observingCiv)
|
||||
|| it.roadStatus.name == adjacent
|
||||
}
|
||||
stats.add(unique.stats.times(numberOfBonuses.toFloat()))
|
||||
@ -346,7 +345,7 @@ open class TileInfo {
|
||||
}
|
||||
}
|
||||
|
||||
fun matchesUniqueFilter(filter: String): Boolean {
|
||||
fun matchesUniqueFilter(filter: String, civInfo: CivilizationInfo?=null): Boolean {
|
||||
return filter == baseTerrain
|
||||
|| filter == Constants.hill && isHill()
|
||||
|| filter == "River" && isAdjacentToRiver()
|
||||
@ -354,7 +353,7 @@ open class TileInfo {
|
||||
|| baseTerrainObject.uniques.contains(filter)
|
||||
|| terrainFeature != null && getTerrainFeature()!!.uniques.contains(filter)
|
||||
|| improvement == filter
|
||||
// || resource == filter // TODO uncomment in next version
|
||||
|| civInfo != null && hasViewableResource(civInfo) && resource == filter
|
||||
|| filter == "Water" && isWater
|
||||
|| filter == "Land" && isLand
|
||||
}
|
||||
|
@ -271,13 +271,13 @@ class Building : NamedStats(), IConstruction {
|
||||
}
|
||||
|
||||
for (unique in uniqueObjects) when (unique.placeholderText) {
|
||||
"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 on []" -> if (!cityCenter.matchesUniqueFilter(unique.params[0], civInfo)) return unique.text
|
||||
"Must not be on []" -> if (cityCenter.matchesUniqueFilter(unique.params[0], civInfo)) 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.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
|
||||
&& cityCenter.getTilesInDistance(1).none { it.matchesUniqueFilter(unique.params[0], civInfo) }) return unique.text
|
||||
"Must not be next to []" -> if (cityCenter.getTilesInDistance(1).any { it.matchesUniqueFilter(unique.params[0], civInfo) }) return unique.text
|
||||
"Must have an owned [] within [] tiles" -> if (cityCenter.getTilesInDistance(unique.params[1].toInt()).none {
|
||||
it.matchesUniqueFilter(unique.params[0]) && it.getOwner() == construction.cityInfo.civInfo
|
||||
it.matchesUniqueFilter(unique.params[0], civInfo) && 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
|
||||
|
Loading…
x
Reference in New Issue
Block a user