mirror of
https://github.com/yairm210/Unciv.git
synced 2025-09-27 05:46:43 -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) {
|
for (unique in cityWideUniques + civWideUniques) {
|
||||||
val tileType = unique.params[1]
|
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 (tileType == improvement) continue // This is added to the calculation in getImprovementStats. we don't want to add it twice
|
||||||
if (matchesUniqueFilter(tileType)
|
if (matchesUniqueFilter(tileType, observingCiv)
|
||||||
|| (resource == tileType && hasViewableResource(observingCiv))
|
|
||||||
|| (tileType == "Strategic resource" && hasViewableResource(observingCiv) && getTileResource().resourceType == ResourceType.Strategic)
|
|| (tileType == "Strategic resource" && hasViewableResource(observingCiv) && getTileResource().resourceType == ResourceType.Strategic)
|
||||||
|| (tileType == "Luxury resource" && hasViewableResource(observingCiv) && getTileResource().resourceType == ResourceType.Luxury)
|
|| (tileType == "Luxury resource" && hasViewableResource(observingCiv) && getTileResource().resourceType == ResourceType.Luxury)
|
||||||
|| (tileType == "Bonus resource" && hasViewableResource(observingCiv) && getTileResource().resourceType == ResourceType.Bonus)
|
|| (tileType == "Bonus resource" && hasViewableResource(observingCiv) && getTileResource().resourceType == ResourceType.Bonus)
|
||||||
@ -289,7 +288,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.matchesUniqueFilter(adjacent)
|
|| it.matchesUniqueFilter(adjacent, observingCiv)
|
||||||
|| it.roadStatus.name == adjacent
|
|| it.roadStatus.name == adjacent
|
||||||
}
|
}
|
||||||
stats.add(unique.stats.times(numberOfBonuses.toFloat()))
|
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
|
return filter == baseTerrain
|
||||||
|| filter == Constants.hill && isHill()
|
|| filter == Constants.hill && isHill()
|
||||||
|| filter == "River" && isAdjacentToRiver()
|
|| filter == "River" && isAdjacentToRiver()
|
||||||
@ -354,7 +353,7 @@ open class TileInfo {
|
|||||||
|| baseTerrainObject.uniques.contains(filter)
|
|| baseTerrainObject.uniques.contains(filter)
|
||||||
|| terrainFeature != null && getTerrainFeature()!!.uniques.contains(filter)
|
|| terrainFeature != null && getTerrainFeature()!!.uniques.contains(filter)
|
||||||
|| improvement == filter
|
|| improvement == filter
|
||||||
// || resource == filter // TODO uncomment in next version
|
|| civInfo != null && hasViewableResource(civInfo) && resource == filter
|
||||||
|| filter == "Water" && isWater
|
|| filter == "Water" && isWater
|
||||||
|| filter == "Land" && isLand
|
|| filter == "Land" && isLand
|
||||||
}
|
}
|
||||||
|
@ -271,13 +271,13 @@ class Building : NamedStats(), IConstruction {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (unique in uniqueObjects) when (unique.placeholderText) {
|
for (unique in uniqueObjects) when (unique.placeholderText) {
|
||||||
"Must 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])) 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.
|
"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
|
&& 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]) }) 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 {
|
"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
|
}) 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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user