133 lines
4.4 KiB
Lua
133 lines
4.4 KiB
Lua
local BattleHUD = Object:extend()
|
|
|
|
local gui = require "game.modules.gui"
|
|
|
|
function BattleHUD:new(controller)
|
|
self.controller = controller
|
|
self.target = nil
|
|
|
|
self:loadAssets()
|
|
end
|
|
|
|
function BattleHUD:setTarget(target)
|
|
self.target = target
|
|
end
|
|
|
|
function BattleHUD:loadAssets()
|
|
self.progressbarImage = love.graphics.newImage("assets/gui/hud/progressbar.png")
|
|
self.barBack = love.graphics.newQuad(0, 0, 211, 12, 211, 24)
|
|
self.barFore = love.graphics.newQuad(0, 12, 211, 12, 211, 24)
|
|
self.hud1 = gui.newBorder(424, 20, 14)
|
|
self.hud2 = gui.newBorder(424, 40, 12)
|
|
|
|
self.ring = love.graphics.newImage("assets/gui/hud/ring.png")
|
|
|
|
|
|
|
|
self.font = love.graphics.newImageFont("assets/gui/hud/numbers.png", " 0123456789:/", 1)
|
|
self.font2 = love.graphics.newImageFont("assets/gui/hud/smallnumbers.png", " 0123456789", 0)
|
|
|
|
self.time = love.graphics.newImage("assets/gui/hud/time.png")
|
|
self.score = love.graphics.newImage("assets/gui/hud/score.png")
|
|
self.bonus = love.graphics.newImage("assets/gui/hud/bonus.png")
|
|
|
|
self.controller.assets:addTileset("lifeicon", "assets/sprites/characters/charicons")
|
|
end
|
|
|
|
function BattleHUD:destroy( )
|
|
self.progressbarImage:release( )
|
|
self.barBack:release( )
|
|
self.barFore:release( )
|
|
self.hud1:release( )
|
|
self.hud2:release( )
|
|
end
|
|
|
|
function BattleHUD:update(dt)
|
|
--
|
|
end
|
|
|
|
function BattleHUD:draw()
|
|
love.graphics.setFont( self.font )
|
|
self:drawFrame()
|
|
|
|
if self.target ~= nil then
|
|
self:drawTop(0, 0)
|
|
self:drawBottom(0, 200)
|
|
end
|
|
|
|
self.controller:resetFont( )
|
|
end
|
|
|
|
function BattleHUD:drawFrame()
|
|
love.graphics.setColor(0.256, 0.632, 0.852, 1)
|
|
love.graphics.rectangle("fill", 0, 0, 424, 20)
|
|
love.graphics.rectangle("fill", 0, 200, 424, 20)
|
|
utils.graphics.resetColor()
|
|
love.graphics.draw(self.hud1, 0, 0, 0, 1, -1, 0, 20)
|
|
love.graphics.draw(self.hud2, 0, 200, 0, -1, 1, 424, 0)
|
|
end
|
|
|
|
function BattleHUD:drawTop(x, y)
|
|
|
|
local ringx, ringy = x + 289, y + 6
|
|
love.graphics.draw(self.ring, ringx, ringy)
|
|
local rings = utils.math.numberToString(self.target.rings, 3)
|
|
|
|
love.graphics.print(rings, ringx + 14, ringy + 1)
|
|
|
|
|
|
love.graphics.draw(self.score, x+8, y+3)
|
|
local score = utils.math.numberToString(self.target.score, 9)
|
|
local bonus = utils.math.numberToString(self.target.bonus, 3)
|
|
local combo = utils.math.numberToString(self.target.combo, 3)
|
|
|
|
love.graphics.print(score, x + 8 + 42, y + 4)
|
|
|
|
local bonusx, bonusy = x + 165, y + 1
|
|
love.graphics.draw(self.bonus, bonusx, bonusy)
|
|
love.graphics.setFont( self.font2 )
|
|
love.graphics.print(combo, bonusx + 28, bonusy)
|
|
love.graphics.print(bonus, bonusx + 28, bonusy + 8)
|
|
love.graphics.setFont( self.font )
|
|
|
|
self.controller.assets.tileset["lifeicon"]:drawTile(self.target.lifeicon, x + 360, y + 4)
|
|
local lives = utils.math.numberToString(self.target.life, 2)
|
|
love.graphics.print(lives, x + 360 + 18, y + 7 )
|
|
end
|
|
|
|
function BattleHUD:drawBottom(x, y)
|
|
local progressx, progressy = x + 204, y + 4
|
|
love.graphics.draw(self.progressbarImage, self.barBack, progressx, progressy)
|
|
local width = math.floor((self.target.x / self.controller.world.width) * (211 - 16))
|
|
width = math.max(0, width)
|
|
width = math.min(width, (211 - 16))
|
|
love.graphics.setScissor(progressx + 8, progressy, width, 12)
|
|
love.graphics.draw(self.progressbarImage, self.barFore, progressx, progressy)
|
|
love.graphics.setScissor( )
|
|
self.controller.assets.tileset["lifeicon"]:drawTile(self.target.lifeicon, progressx + width, progressy - 2)
|
|
if (self.controller.missiondata.turns > 1) then
|
|
local turn1 = utils.math.numberToString(self.target.turn, 2)
|
|
local turn2 = utils.math.numberToString(self.controller.missiondata.turns, 2)
|
|
love.graphics.printf(turn1 .. "/" .. turn2, progressx, progressy + 12 + 2, 210, "right")
|
|
end
|
|
|
|
local timex, timey = x + 5, y + 2
|
|
love.graphics.draw(self.time, timex, timey)
|
|
local timestring = self:getTimeString(self.controller.mission.timer)
|
|
|
|
love.graphics.print(timestring, timex + 32, timey + 1)
|
|
|
|
|
|
end
|
|
|
|
function BattleHUD:getTimeString(numberOfSeconds)
|
|
local numberOfSeconds = numberOfSeconds or 0
|
|
local microseconds = math.floor((numberOfSeconds % 1) * 100)
|
|
local seconds = math.floor(numberOfSeconds % 60)
|
|
local minutes = math.floor(numberOfSeconds / 60)
|
|
return utils.math.numberToString(minutes, 2) .. ":"
|
|
.. utils.math.numberToString(seconds, 2) .. ":"
|
|
.. utils.math.numberToString(microseconds, 2)
|
|
end
|
|
|
|
return BattleHUD
|