game/gui: new progressbar system

This commit is contained in:
Kazhnuz 2019-03-03 19:20:11 +01:00
parent 6df2e73264
commit 0386288e1e
1 changed files with 64 additions and 0 deletions

View File

@ -1,5 +1,7 @@
local gui = {}
local ProgressBar = Object:extend()
function gui.newBorder(id, width, height)
local filename = "assets/sprites/gui/hborder.png"
local texture = love.graphics.newImage(filename)
@ -83,4 +85,66 @@ function gui.newTextBox(filename, width, height)
return canvas
end
function gui.newProgressBar(sprite, outerfont, innerfont, label, width)
return ProgressBar(sprite, outerfont, innerfont, label, width)
end
function ProgressBar:new(sprite, outerfont, innerfont, label, width)
local filepath = "assets/gui/progressbar/"
self.image = love.graphics.newImage(filepath .. sprite .. ".png")
local backimg = love.graphics.newImage(filepath .. "backbar.png")
self.quad = {}
self.quad[1] = love.graphics.newQuad(0, 0, 2, 12, 5, 12)
self.quad[2] = love.graphics.newQuad(2, 0, 1, 12, 5, 12)
self.quad[3] = love.graphics.newQuad(3, 0, 2, 12, 5, 12)
self.width = width
self.outerfont = outerfont
self.innerfont = innerfont
self.frontcanvas = love.graphics.newCanvas(width, 12)
self.backcanvas = love.graphics.newCanvas(ox + width, 12)
self.ox = self.outerfount:getWidth("label")
-- On commence par préparer le canvas avant, qui sera utilisé pour dessiner
-- la partie coloré de la barre de progres
love.graphics.setCanvas( self.frontcanvas )
for i=1, (width-4) do
if (i == 1) then
love.graphics.draw(self.image, self.quad[2], i + 1, 0)
end
end
love.graphics.draw(self.image, self.quad[1], 0, 0)
love.graphics.draw(self.image, self.quad[3], width - 2, 0)
-- On commence par préparer le fond de la barre
love.graphics.setCanvas( self.backcanvas )
for i=1, (width-4) do
if (i == 1) then
love.graphics.draw(backimg, self.quad[2], self.ox + i + 1, 0)
end
end
love.graphics.draw(backimg, self.quad[1], self.ox, 0)
love.graphics.draw(backimg, self.quad[3], self.ox + width - 2, 0)
self.outerfont:set()
love.graphics.printf(label, self.ox, 7, self.ox, "right")
love.graphics.setCanvas( )
end
function ProgressBar:draw(x, y, stat, innerlabel)
love.graphics.draw(self.frontcanvas, x - self.ox, y)
love.graphics.setScissor(x, y, self.width * stat, 12)
love.graphics.draw(self.backcanvas, x - self.ox, y)
love.graphics.setScissor()
end
return gui