sonic-bluestreak/sonic-boost.love/scenes/subgame/sonic-boost/controller/hud.lua

130 lines
4.1 KiB
Lua
Raw Normal View History

local BattleHUD = Object:extend()
2019-02-04 08:04:40 +01:00
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()
2019-02-04 08:01:23 +01:00
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)
2019-02-04 08:04:40 +01:00
self.hud1 = gui.newBorder(424, 20, 8)
self.hud2 = gui.newBorder(424, 40, 8)
self.ring = love.graphics.newImage("assets/gui/hud/ring.png")
2019-02-04 08:01:23 +01:00
self.font = love.graphics.newImageFont("assets/gui/hud/numbers.png", " 0123456789:/", 1)
self.font2 = love.graphics.newImageFont("assets/gui/hud/smallnumbers.png", " 0123456789", 0)
2019-02-04 08:01:23 +01:00
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.draw(self.hud1, 0, 0)
love.graphics.draw(self.hud2, 0, 200)
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 + 5, 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 + 228, y + 1
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