perf(hit,act): local variables to save data (is null equality that hard to compute?! what's going on?!)

This commit is contained in:
yairm210 2024-12-15 12:32:59 +02:00
parent 16f0a9844c
commit 62bae6b166

View File

@ -19,6 +19,7 @@ import com.unciv.ui.screens.basescreen.BaseScreen
/** The unit flag is the synbol that appears behind the map unit - circle regularly, shield when defending, etc */ /** The unit flag is the synbol that appears behind the map unit - circle regularly, shield when defending, etc */
class TileLayerUnitFlag(tileGroup: TileGroup, size: Float) : TileLayer(tileGroup, size) { class TileLayerUnitFlag(tileGroup: TileGroup, size: Float) : TileLayer(tileGroup, size) {
private var noIcons = true
private var civilianUnitIcon: UnitIconGroup? = null private var civilianUnitIcon: UnitIconGroup? = null
private var militaryUnitIcon: UnitIconGroup? = null private var militaryUnitIcon: UnitIconGroup? = null
@ -27,14 +28,17 @@ class TileLayerUnitFlag(tileGroup: TileGroup, size: Float) : TileLayer(tileGroup
} }
override fun act(delta: Float) { // No 'snapshotting' since we trust it will remain the same override fun act(delta: Float) { // No 'snapshotting' since we trust it will remain the same
if (civilianUnitIcon == null && militaryUnitIcon == null) if (noIcons)
return return
for (child in children) for (child in children)
child.act(delta) child.act(delta)
} }
// For perf profiling // For perf profiling
override fun draw(batch: Batch?, parentAlpha: Float) = super.draw(batch, parentAlpha) override fun draw(batch: Batch?, parentAlpha: Float) {
if (noIcons) return
super.draw(batch, parentAlpha)
}
private fun clearSlots() { private fun clearSlots() {
civilianUnitIcon?.remove() civilianUnitIcon?.remove()
@ -139,6 +143,7 @@ class TileLayerUnitFlag(tileGroup: TileGroup, size: Float) : TileLayer(tileGroup
civilianUnitIcon = newUnitIcon(0, tileGroup.tile.civilianUnit, isCivilianShown, viewingCiv) civilianUnitIcon = newUnitIcon(0, tileGroup.tile.civilianUnit, isCivilianShown, viewingCiv)
militaryUnitIcon = newUnitIcon(1, tileGroup.tile.militaryUnit, isMilitaryShown, viewingCiv) militaryUnitIcon = newUnitIcon(1, tileGroup.tile.militaryUnit, isMilitaryShown, viewingCiv)
noIcons = civilianUnitIcon == null && militaryUnitIcon == null
} }
override fun doUpdate(viewingCiv: Civilization?, localUniqueCache: LocalUniqueCache) { override fun doUpdate(viewingCiv: Civilization?, localUniqueCache: LocalUniqueCache) {
@ -159,6 +164,7 @@ class TileLayerUnitFlag(tileGroup: TileGroup, size: Float) : TileLayer(tileGroup
fun reset() { fun reset() {
clearSlots() clearSlots()
noIcons = true
} }
} }