mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-03-07 20:31:51 +09:00
pre-assigned vital metre
Former-commit-id: 48d968d5b93ed6a4fb5a2f7fe63e2c24b7aaa476
This commit is contained in:
@@ -98,6 +98,9 @@ class StateInGame : BasicGameState() {
|
||||
private val UI_QUICK_BAR = "uiQuickBar"
|
||||
private val UI_INVENTORY_PLAYER = "uiInventoryPlayer"
|
||||
private val UI_INVENTORY_ANON = "uiInventoryAnon"
|
||||
private val UI_VITAL1 = "uiVital1"
|
||||
private val UI_VITAL2 = "uiVital2"
|
||||
private val UI_VITAL3 = "uiVital3"
|
||||
|
||||
var paused: Boolean = false
|
||||
get() = consoleHandler.isOpened
|
||||
@@ -156,6 +159,8 @@ class StateInGame : BasicGameState() {
|
||||
// set smooth lighting as in config
|
||||
KeyToggler.forceSet(KEY_LIGHTMAP_SMOOTH, Terrarum.getConfigBoolean("smoothlighting"))
|
||||
|
||||
|
||||
|
||||
// queue up game UIs
|
||||
// lesser UIs
|
||||
// quick bar
|
||||
@@ -164,6 +169,7 @@ class StateInGame : BasicGameState() {
|
||||
uiAliases[UI_QUICK_BAR]!!.setPosition(0, 0)
|
||||
uiAliases[UI_QUICK_BAR]!!.UI.handler = uiAliases[UI_QUICK_BAR]
|
||||
uiContainer.add(uiAliases[UI_QUICK_BAR]!!)
|
||||
|
||||
// pie menu
|
||||
uiAliases[UI_PIE_MENU] = UIHandler(UIPieMenu())
|
||||
uiAliases[UI_PIE_MENU]!!.setPosition(
|
||||
@@ -173,22 +179,22 @@ class StateInGame : BasicGameState() {
|
||||
uiAliases[UI_PIE_MENU]!!.UI.handler = uiAliases[UI_PIE_MENU]
|
||||
uiContainer.add(uiAliases[UI_PIE_MENU]!!)
|
||||
|
||||
// vital metre
|
||||
// fill in getter functions by
|
||||
// (uiAliases[UI_QUICK_BAR]!!.UI as UIVitalMetre).vitalGetterMax = { some_function }
|
||||
uiAliases[UI_VITAL1] = UIHandler(UIVitalMetre(player, { null }, { null }, null, 0))
|
||||
uiAliases[UI_VITAL1]!!.setAsAlwaysVisible()
|
||||
uiAliases[UI_VITAL2] = UIHandler(UIVitalMetre(player, { null }, { null }, null, 1))
|
||||
uiAliases[UI_VITAL2]!!.setAsAlwaysVisible()
|
||||
uiAliases[UI_VITAL3] = UIHandler(UIVitalMetre(player, { null }, { null }, null, 2))
|
||||
uiAliases[UI_VITAL3]!!.setAsAlwaysVisible()
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// audio test
|
||||
//AudioResourceLibrary.ambientsWoods[0].play()
|
||||
|
||||
|
||||
|
||||
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
|
||||
|
||||
@@ -16,28 +16,28 @@ import org.newdawn.slick.Input
|
||||
*/
|
||||
class UIVitalMetre(
|
||||
var player: ActorHumanoid,
|
||||
val vitalGetterVal: () -> Float,
|
||||
val vitalGetterMax: () -> Float,
|
||||
val color: Color,
|
||||
var vitalGetterVal: () -> Float?,
|
||||
var vitalGetterMax: () -> Float?,
|
||||
var color: Color?,
|
||||
val order: Int
|
||||
) : UICanvas {
|
||||
|
||||
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 width: Int = 80 + 2 * margin; set(value) { throw Error("operation not permitted") }
|
||||
override var height: Int; get() = player.baseHitboxH * 3 + margin; set(value) { throw Error("operation not permitted") }
|
||||
override var handler: UIHandler? = null
|
||||
override var openCloseTime: Int = 50
|
||||
|
||||
private val relativePX = width / 2f
|
||||
private val relativePY = player.baseHitboxH * 1.5f
|
||||
private val circleRadius = player.baseHitboxH * 3f
|
||||
private val relativePY: Float; get() = player.baseHitboxH * 1.5f
|
||||
private val circleRadius: Float; get() = player.baseHitboxH * 3f
|
||||
|
||||
private val theta = 33f
|
||||
private val halfTheta = theta / 2f
|
||||
|
||||
private val backColor = color.darkerLab(0.3f)
|
||||
private val backColor: Color; get() = color?.darkerLab(0.3f) ?: Color.black
|
||||
|
||||
|
||||
override fun update(gc: GameContainer, delta: Int) {
|
||||
@@ -48,28 +48,31 @@ class UIVitalMetre(
|
||||
}
|
||||
|
||||
override fun render(gc: GameContainer, g: Graphics) {
|
||||
g.lineWidth = 2f
|
||||
if (vitalGetterVal() != null && vitalGetterMax() != null) {
|
||||
|
||||
// background
|
||||
g.color = backColor
|
||||
g.drawArc(
|
||||
relativePX - circleRadius - order * gap,
|
||||
-circleRadius - order * gap,
|
||||
circleRadius * 2f + order * gap * 2,
|
||||
circleRadius * 2f + order * gap * 2,
|
||||
90f - halfTheta,
|
||||
90f + halfTheta - theta * (vitalGetterVal() / vitalGetterMax())
|
||||
)
|
||||
g.lineWidth = 2f
|
||||
|
||||
g.color = color
|
||||
g.drawArc(
|
||||
relativePX - circleRadius - order * gap,
|
||||
-circleRadius - order * gap,
|
||||
circleRadius * 2f + order * gap * 2,
|
||||
circleRadius * 2f + order * gap * 2,
|
||||
90f + halfTheta - theta * (vitalGetterVal() / vitalGetterMax()),
|
||||
90f + halfTheta
|
||||
)
|
||||
// background
|
||||
g.color = backColor
|
||||
g.drawArc(
|
||||
relativePX - circleRadius - order * gap,
|
||||
-circleRadius - order * gap,
|
||||
circleRadius * 2f + order * gap * 2,
|
||||
circleRadius * 2f + order * gap * 2,
|
||||
90f - halfTheta,
|
||||
90f + halfTheta - theta * (vitalGetterVal()!! / vitalGetterMax()!!)
|
||||
)
|
||||
|
||||
g.color = color
|
||||
g.drawArc(
|
||||
relativePX - circleRadius - order * gap,
|
||||
-circleRadius - order * gap,
|
||||
circleRadius * 2f + order * gap * 2,
|
||||
circleRadius * 2f + order * gap * 2,
|
||||
90f + halfTheta - theta * (vitalGetterVal()!! / vitalGetterMax()!!),
|
||||
90f + halfTheta
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
override fun processInput(gc: GameContainer, delta: Int, input: Input) {
|
||||
|
||||
Reference in New Issue
Block a user