mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-03-07 12:21:52 +09:00
ordered vital metre -- you can display two or more vitals
Former-commit-id: 27767b632a1c65060750e49c55db7e71a0e443ae Former-commit-id: b431478a0d43193ac60011a958f6305673334755
This commit is contained in:
@@ -178,11 +178,17 @@ class StateInGame : BasicGameState() {
|
||||
|
||||
|
||||
|
||||
val vitalmetre = UIHandler(UIVitalMetre(player, { 100f }, { 100f }, Color(255, 182, 0)))
|
||||
val vitalmetre = UIHandler(UIVitalMetre(player, { 88f }, { 100f }, Color(255, 182, 0), 0))
|
||||
//vitalmetre.setAsAlwaysVisible()
|
||||
vitalmetre.isVisible = true
|
||||
vitalmetre.UI.handler = vitalmetre
|
||||
uiContainer.add(vitalmetre)
|
||||
|
||||
val vitalmetre2 = UIHandler(UIVitalMetre(player, { 72f }, { 100f }, Color(180, 255, 0), 1))
|
||||
//vitalmetre.setAsAlwaysVisible()
|
||||
vitalmetre2.isVisible = true
|
||||
vitalmetre2.UI.handler = vitalmetre2
|
||||
uiContainer.add(vitalmetre2)
|
||||
}
|
||||
|
||||
var particlesActive = 0
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package net.torvald.terrarum.ui
|
||||
|
||||
import net.torvald.colourutil.CIELabUtil.darkerLab
|
||||
import net.torvald.terrarum.Terrarum
|
||||
import net.torvald.terrarum.gameactors.ActorHumanoid
|
||||
import net.torvald.terrarum.gameactors.floorInt
|
||||
@@ -18,11 +19,14 @@ class UIVitalMetre(
|
||||
val vitalGetterVal: () -> Float,
|
||||
val vitalGetterMax: () -> Float,
|
||||
val color: Color,
|
||||
val order: Int = 0
|
||||
val order: Int
|
||||
) : UICanvas {
|
||||
|
||||
override var width: Int = 84
|
||||
override var height: Int = player.baseHitboxH * 3 + 2
|
||||
private val margin = 25
|
||||
private val gap = 4f
|
||||
|
||||
override var width: Int = 80 + 2 * margin
|
||||
override var height: Int = player.baseHitboxH * 3 + margin
|
||||
override var handler: UIHandler? = null
|
||||
override var openCloseTime: Int = 50
|
||||
|
||||
@@ -33,6 +37,9 @@ class UIVitalMetre(
|
||||
private val theta = 33f
|
||||
private val halfTheta = theta / 2f
|
||||
|
||||
private val backColor = color.darkerLab(0.3f)
|
||||
|
||||
|
||||
override fun update(gc: GameContainer, delta: Int) {
|
||||
handler!!.setPosition(
|
||||
(Terrarum.HALFW - relativePX).roundInt(),
|
||||
@@ -41,31 +48,25 @@ class UIVitalMetre(
|
||||
}
|
||||
|
||||
override fun render(gc: GameContainer, g: Graphics) {
|
||||
g.lineWidth = 1.8f
|
||||
val saturation = 2f
|
||||
g.lineWidth = 2f
|
||||
|
||||
// background
|
||||
g.color = Color(
|
||||
(color.r * saturation) - (saturation - 1),
|
||||
(color.g * saturation) - (saturation - 1),
|
||||
(color.b * saturation) - (saturation - 1),
|
||||
0.9f
|
||||
)
|
||||
g.color = backColor
|
||||
g.drawArc(
|
||||
relativePX - circleRadius,
|
||||
-circleRadius,
|
||||
circleRadius * 2f,
|
||||
circleRadius * 2f,
|
||||
relativePX - circleRadius - order * gap,
|
||||
-circleRadius - order * gap,
|
||||
circleRadius * 2f + order * gap * 2,
|
||||
circleRadius * 2f + order * gap * 2,
|
||||
90f - halfTheta,
|
||||
90f + halfTheta
|
||||
90f + halfTheta - theta * (vitalGetterVal() / vitalGetterMax())
|
||||
)
|
||||
|
||||
g.color = color
|
||||
g.drawArc(
|
||||
relativePX - circleRadius,
|
||||
-circleRadius,
|
||||
circleRadius * 2f,
|
||||
circleRadius * 2f,
|
||||
relativePX - circleRadius - order * gap,
|
||||
-circleRadius - order * gap,
|
||||
circleRadius * 2f + order * gap * 2,
|
||||
circleRadius * 2f + order * gap * 2,
|
||||
90f + halfTheta - theta * (vitalGetterVal() / vitalGetterMax()),
|
||||
90f + halfTheta
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user