mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-06-11 02:54:04 +09:00
minimap: only update and render when needed
This commit is contained in:
@@ -46,8 +46,8 @@ object MinimapComposer {
|
|||||||
var topLeftCoordY = 0
|
var topLeftCoordY = 0
|
||||||
|
|
||||||
const val LIVETILE_SIZE = 64
|
const val LIVETILE_SIZE = 64
|
||||||
const val DISPLAY_CANVAS_WIDTH = 2048
|
const val DISPLAY_CANVAS_WIDTH = 2048 // must be divisible by LIVETILE_SIZE
|
||||||
const val DISPLAY_CANVAS_HEIGHT = 1024
|
const val DISPLAY_CANVAS_HEIGHT = 1024 // must be divisible by LIVETILE_SIZE
|
||||||
val minimap = Pixmap(DISPLAY_CANVAS_WIDTH, DISPLAY_CANVAS_HEIGHT, Pixmap.Format.RGBA8888)
|
val minimap = Pixmap(DISPLAY_CANVAS_WIDTH, DISPLAY_CANVAS_HEIGHT, Pixmap.Format.RGBA8888)
|
||||||
const val TILES_IN_X = DISPLAY_CANVAS_WIDTH / LIVETILE_SIZE
|
const val TILES_IN_X = DISPLAY_CANVAS_WIDTH / LIVETILE_SIZE
|
||||||
const val TILES_IN_Y = DISPLAY_CANVAS_HEIGHT / LIVETILE_SIZE
|
const val TILES_IN_Y = DISPLAY_CANVAS_HEIGHT / LIVETILE_SIZE
|
||||||
@@ -96,12 +96,30 @@ object MinimapComposer {
|
|||||||
// TODO
|
// TODO
|
||||||
|
|
||||||
}
|
}
|
||||||
|
fun revalidateAll() {
|
||||||
|
liveTilesMeta.forEach { it.revalidate = true }
|
||||||
|
}
|
||||||
|
|
||||||
|
private var rerender = true
|
||||||
|
|
||||||
|
/**
|
||||||
|
* When to call:
|
||||||
|
* - every 5 seconds or so
|
||||||
|
* - every .5 seconds for 10 seconds after the tilemap changed
|
||||||
|
*/
|
||||||
|
fun requestRender() {
|
||||||
|
printdbg(this, "Rerender requested")
|
||||||
|
rerender = true
|
||||||
|
}
|
||||||
|
|
||||||
fun renderToBackground() {
|
fun renderToBackground() {
|
||||||
for (y in 0 until TILES_IN_Y) {
|
if (rerender) {
|
||||||
for (x in 0 until TILES_IN_X) {
|
for (y in 0 until TILES_IN_Y) {
|
||||||
minimap.drawPixmap(liveTiles[tilemap[y][x]], x * LIVETILE_SIZE, y * LIVETILE_SIZE)
|
for (x in 0 until TILES_IN_X) {
|
||||||
|
minimap.drawPixmap(liveTiles[tilemap[y][x]], x * LIVETILE_SIZE, y * LIVETILE_SIZE)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
rerender = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -220,6 +220,8 @@ class UIInventoryFull(
|
|||||||
MinimapComposer.setWorld(Terrarum.ingame!!.world)
|
MinimapComposer.setWorld(Terrarum.ingame!!.world)
|
||||||
MinimapComposer.update()
|
MinimapComposer.update()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
minimapRerenderTimer += Gdx.graphics.rawDeltaTime
|
||||||
}
|
}
|
||||||
|
|
||||||
private val gradStartCol = Color(0x404040_60)
|
private val gradStartCol = Color(0x404040_60)
|
||||||
@@ -232,6 +234,9 @@ class UIInventoryFull(
|
|||||||
private var xEnd = (Terrarum.WIDTH + internalWidth).div(2).toFloat()
|
private var xEnd = (Terrarum.WIDTH + internalWidth).div(2).toFloat()
|
||||||
private var yEnd = (Terrarum.HEIGHT + internalHeight).div(2).toFloat()
|
private var yEnd = (Terrarum.HEIGHT + internalHeight).div(2).toFloat()
|
||||||
|
|
||||||
|
private var minimapRerenderTimer = 0f
|
||||||
|
private val minimapRerenderInterval = .5f
|
||||||
|
|
||||||
fun requestTransition(target: Int) {
|
fun requestTransition(target: Int) {
|
||||||
if (!transitionOngoing) {
|
if (!transitionOngoing) {
|
||||||
transitionRequested = true
|
transitionRequested = true
|
||||||
@@ -398,12 +403,18 @@ class UIInventoryFull(
|
|||||||
// render minimap
|
// render minimap
|
||||||
batch.end()
|
batch.end()
|
||||||
|
|
||||||
|
if (minimapRerenderTimer >= minimapRerenderInterval) {
|
||||||
|
minimapRerenderTimer = 0f
|
||||||
|
MinimapComposer.requestRender()
|
||||||
|
}
|
||||||
|
|
||||||
MinimapComposer.renderToBackground()
|
MinimapComposer.renderToBackground()
|
||||||
|
|
||||||
minimapFBO.inAction(minimapCamera, batch) {
|
minimapFBO.inAction(minimapCamera, batch) {
|
||||||
// whatever.
|
// whatever.
|
||||||
MinimapComposer.tempTex.dispose()
|
MinimapComposer.tempTex.dispose()
|
||||||
MinimapComposer.tempTex = Texture(MinimapComposer.minimap)
|
MinimapComposer.tempTex = Texture(MinimapComposer.minimap)
|
||||||
|
MinimapComposer.tempTex.setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Nearest)
|
||||||
|
|
||||||
batch.inUse {
|
batch.inUse {
|
||||||
|
|
||||||
@@ -545,6 +556,8 @@ class UIInventoryFull(
|
|||||||
|
|
||||||
override fun endClosing(delta: Float) {
|
override fun endClosing(delta: Float) {
|
||||||
(Terrarum.ingame as? Ingame)?.setTooltipMessage(null) // required!
|
(Terrarum.ingame as? Ingame)?.setTooltipMessage(null) // required!
|
||||||
|
|
||||||
|
MinimapComposer.revalidateAll()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user