pre-assigned vital metre

Former-commit-id: 48d968d5b93ed6a4fb5a2f7fe63e2c24b7aaa476
This commit is contained in:
Song Minjae
2017-03-10 02:15:17 +09:00
parent 4987798be6
commit 50c080b388
2 changed files with 51 additions and 42 deletions

View File

@@ -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

View File

@@ -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) {