mirror of
https://github.com/yairm210/Unciv.git
synced 2024-12-22 17:24:24 +07:00
perf(minor): TileLayerCityButton faster "no-op" check
This commit is contained in:
parent
1a0bb512bf
commit
fdb8026c1b
@ -34,6 +34,8 @@ import com.unciv.utils.DebugUtils
|
||||
import com.unciv.utils.Log
|
||||
import com.unciv.utils.withItem
|
||||
import com.unciv.utils.withoutItem
|
||||
import kotlin.collections.ArrayList
|
||||
import kotlin.collections.HashSet
|
||||
import kotlin.math.abs
|
||||
import kotlin.math.min
|
||||
import kotlin.random.Random
|
||||
@ -836,8 +838,10 @@ class Tile : IsPartOfGameInfoSerialization, Json.Serializable {
|
||||
|
||||
// List hash is function of all its items, so the same items in the same order will always give the same hash
|
||||
cachedTerrainData = tileMap.tileUniqueMapCache.getOrPut(terrainNameList) {
|
||||
TileMap.TerrainListData(UniqueMap(allTerrains.flatMap { it.uniqueObjects }),
|
||||
terrainNameList.toSet())
|
||||
TileMap.TerrainListData(
|
||||
UniqueMap(allTerrains.flatMap { it.uniqueObjects }),
|
||||
terrainNameList.toSet()
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -21,18 +21,18 @@ class TileLayerCityButton(tileGroup: TileGroup, size: Float) : TileLayer(tileGro
|
||||
}
|
||||
|
||||
override fun act(delta: Float) {
|
||||
if (tileGroup.tile.isCityCenter())
|
||||
if (tile.isCityCenter())
|
||||
super.act(delta)
|
||||
}
|
||||
|
||||
override fun hit(x: Float, y: Float, touchable: Boolean): Actor? {
|
||||
if (tileGroup.tile.isCityCenter())
|
||||
if (tile.isCityCenter())
|
||||
return super.hit(x, y, touchable)
|
||||
return null
|
||||
}
|
||||
|
||||
override fun draw(batch: Batch?, parentAlpha: Float) {
|
||||
if (tileGroup.tile.isCityCenter())
|
||||
if (tile.isCityCenter())
|
||||
super.draw(batch, parentAlpha)
|
||||
}
|
||||
|
||||
|
@ -105,7 +105,8 @@ class TileLayerTerrain(tileGroup: TileGroup, size: Float) : TileLayer(tileGroup,
|
||||
val vectorToNeighbor = neighborTile.position.cpy().sub(originTile.position)
|
||||
val direction = NeighborDirection.fromVector(vectorToNeighbor)
|
||||
?: return emptySequence()
|
||||
val possibleEdgeFiles = strings.edgeImagesByPosition[direction] ?: return emptySequence()
|
||||
|
||||
val possibleEdgeImages = strings.edgeImagesByPosition[direction] ?: return emptySequence()
|
||||
|
||||
// Required for performance - full matchesFilter is too expensive for something that needs to run every update()
|
||||
fun matchesFilterMinimal(originTile: Tile, filter: String): Boolean {
|
||||
@ -114,7 +115,7 @@ class TileLayerTerrain(tileGroup: TileGroup, size: Float) : TileLayer(tileGroup,
|
||||
return false
|
||||
}
|
||||
|
||||
return possibleEdgeFiles.asSequence().filter {
|
||||
return possibleEdgeImages.asSequence().filter {
|
||||
if (!matchesFilterMinimal(originTile, it.originTileFilter)) return@filter false
|
||||
if (!matchesFilterMinimal(neighborTile, it.destinationTileFilter)) return@filter false
|
||||
return@filter true
|
||||
|
Loading…
Reference in New Issue
Block a user