sonic-radiance/sonic-radiance.love/scenes/battlesystem/gui/statusbar.lua

75 lines
2 KiB
Lua

local StatusBar = Object:extend()
local TweenManager = require "game.modules.tweenmanager"
local gui = require "game.modules.gui"
local HUDBASE = 8
local HUDSEP = 152
function StatusBar:new(actor)
self.actor = actor
self.hud = self.actor.scene.hud
self.assets = self.actor.assets
self.charid = self.actor.charid
self.stats = game.characters.list[self.charid].stats
self.hp = self.stats.hp
self.pp = self.stats.pp
self.tweens = TweenManager(self)
end
function StatusBar:update(dt)
self.tweens:update(dt)
end
function StatusBar:updateHP()
self.tweens:newTween(0, 0.3, {hp = game.characters.list[self.charid].stats.hp}, 'linear')
end
function StatusBar:updatePP()
self.tweens:newTween(0, 0.3, {pp = game.characters.list[self.charid].stats.pp}, 'linear')
end
function StatusBar:drawEmblem(x, y)
self.assets.images["e_speedster"]:draw(x, y)
core.screen:setScissor(x, y-16, 32, 40)
self.assets.sprites[self.charid]:drawAnimation(x+14, y+14)
core.screen:resetScissor( )
self.assets.images["m_speedster"]:draw(x, y)
end
function StatusBar:draw()
local x = HUDBASE + (self.actor.charnumber-1)*HUDSEP
local y = self.actor.scene.hud:getPlayerHUDPosition()
self:drawEmblem(x, y)
self.assets.images["statusbar"]:draw(x+12, y-6)
local hpmax = self.stats.hpmax
local ppmax = self.stats.ppmax
local bar1 = math.floor((self.hp/self.stats.hpmax)*107)
local bar2 = math.floor((self.pp/self.stats.ppmax)*108)
love.graphics.setColor(248/255, 160/255, 0, 1)
gui.drawBar(x+29, y+5, bar1, 7)
love.graphics.setColor(0, 248/255, 248/255, 1)
gui.drawBar(x+17, y+17, bar2, 7)
utils.graphics.resetColor()
self.assets.fonts["hudnbrs_small"]:set()
love.graphics.print(math.floor(self.hp) .. "/" .. hpmax, x+34, y+5)
love.graphics.print(math.floor(self.pp) .. "/" .. ppmax, x+28, y+17)
local lvl = game.characters.list[self.charid].stats.level
if lvl < 100 then
lvl = "0" .. lvl
end
love.graphics.print(lvl, x+122, y-5)
end
return StatusBar