aboutsummaryrefslogtreecommitdiff
path: root/src/main/kotlin/com/dulkirfabric/util/HudRenderUtil.kt
blob: 327afdd1fb351a9d07428efdc39cfb7e74af9da7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package com.dulkirfabric.util

import com.dulkirfabric.DulkirModFabric.mc
import com.dulkirfabric.events.HudRenderEvent
import meteordevelopment.orbit.EventHandler
import net.minecraft.client.gui.DrawContext
import net.minecraft.text.Text
import java.time.Duration

object HudRenderUtil {

    private var curTitle: Text? = null
    private var clearTime: Long = -1

    private fun drawTitle(context: DrawContext, content: Text) {
        val matrices = context.matrices
        val tr = mc.textRenderer
        val w = tr.getWidth(content)
        val sf: Float = mc.window.scaledWidth / w.toFloat() / 3
        matrices.push()
        matrices.translate(mc.window.scaledWidth / 3f, mc.window.scaledHeight / 2f, 0f)
        matrices.scale(sf, sf, 1f)
        context.drawText(tr, content, 0, -tr.fontHeight / 2, -1, true)
        matrices.pop()
    }

    fun drawTitle(content: Text, duration: Duration) {
        curTitle = content
        clearTime = System.currentTimeMillis() + duration.toMillis()
    }

    @EventHandler
    fun onHudRender(event: HudRenderEvent) {
        val content = curTitle ?: return
        if (System.currentTimeMillis() >= clearTime) {
            curTitle = null
            return
        }
        drawTitle(event.context, content)
    }
}