mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-06-12 03:24:06 +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.setAsAlwaysVisible()
|
||||||
vitalmetre.isVisible = true
|
vitalmetre.isVisible = true
|
||||||
vitalmetre.UI.handler = vitalmetre
|
vitalmetre.UI.handler = vitalmetre
|
||||||
uiContainer.add(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
|
var particlesActive = 0
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package net.torvald.terrarum.ui
|
package net.torvald.terrarum.ui
|
||||||
|
|
||||||
|
import net.torvald.colourutil.CIELabUtil.darkerLab
|
||||||
import net.torvald.terrarum.Terrarum
|
import net.torvald.terrarum.Terrarum
|
||||||
import net.torvald.terrarum.gameactors.ActorHumanoid
|
import net.torvald.terrarum.gameactors.ActorHumanoid
|
||||||
import net.torvald.terrarum.gameactors.floorInt
|
import net.torvald.terrarum.gameactors.floorInt
|
||||||
@@ -18,11 +19,14 @@ class UIVitalMetre(
|
|||||||
val vitalGetterVal: () -> Float,
|
val vitalGetterVal: () -> Float,
|
||||||
val vitalGetterMax: () -> Float,
|
val vitalGetterMax: () -> Float,
|
||||||
val color: Color,
|
val color: Color,
|
||||||
val order: Int = 0
|
val order: Int
|
||||||
) : UICanvas {
|
) : UICanvas {
|
||||||
|
|
||||||
override var width: Int = 84
|
private val margin = 25
|
||||||
override var height: Int = player.baseHitboxH * 3 + 2
|
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 handler: UIHandler? = null
|
||||||
override var openCloseTime: Int = 50
|
override var openCloseTime: Int = 50
|
||||||
|
|
||||||
@@ -33,6 +37,9 @@ class UIVitalMetre(
|
|||||||
private val theta = 33f
|
private val theta = 33f
|
||||||
private val halfTheta = theta / 2f
|
private val halfTheta = theta / 2f
|
||||||
|
|
||||||
|
private val backColor = color.darkerLab(0.3f)
|
||||||
|
|
||||||
|
|
||||||
override fun update(gc: GameContainer, delta: Int) {
|
override fun update(gc: GameContainer, delta: Int) {
|
||||||
handler!!.setPosition(
|
handler!!.setPosition(
|
||||||
(Terrarum.HALFW - relativePX).roundInt(),
|
(Terrarum.HALFW - relativePX).roundInt(),
|
||||||
@@ -41,31 +48,25 @@ class UIVitalMetre(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun render(gc: GameContainer, g: Graphics) {
|
override fun render(gc: GameContainer, g: Graphics) {
|
||||||
g.lineWidth = 1.8f
|
g.lineWidth = 2f
|
||||||
val saturation = 2f
|
|
||||||
|
|
||||||
// background
|
// background
|
||||||
g.color = Color(
|
g.color = backColor
|
||||||
(color.r * saturation) - (saturation - 1),
|
|
||||||
(color.g * saturation) - (saturation - 1),
|
|
||||||
(color.b * saturation) - (saturation - 1),
|
|
||||||
0.9f
|
|
||||||
)
|
|
||||||
g.drawArc(
|
g.drawArc(
|
||||||
relativePX - circleRadius,
|
relativePX - circleRadius - order * gap,
|
||||||
-circleRadius,
|
-circleRadius - order * gap,
|
||||||
circleRadius * 2f,
|
circleRadius * 2f + order * gap * 2,
|
||||||
circleRadius * 2f,
|
circleRadius * 2f + order * gap * 2,
|
||||||
90f - halfTheta,
|
90f - halfTheta,
|
||||||
90f + halfTheta
|
90f + halfTheta - theta * (vitalGetterVal() / vitalGetterMax())
|
||||||
)
|
)
|
||||||
|
|
||||||
g.color = color
|
g.color = color
|
||||||
g.drawArc(
|
g.drawArc(
|
||||||
relativePX - circleRadius,
|
relativePX - circleRadius - order * gap,
|
||||||
-circleRadius,
|
-circleRadius - order * gap,
|
||||||
circleRadius * 2f,
|
circleRadius * 2f + order * gap * 2,
|
||||||
circleRadius * 2f,
|
circleRadius * 2f + order * gap * 2,
|
||||||
90f + halfTheta - theta * (vitalGetterVal() / vitalGetterMax()),
|
90f + halfTheta - theta * (vitalGetterVal() / vitalGetterMax()),
|
||||||
90f + halfTheta
|
90f + halfTheta
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user