game/gui: new progressbar system
This commit is contained in:
parent
6df2e73264
commit
0386288e1e
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue