feat: add basic tweening to guiElements

This commit is contained in:
Kazhnuz 2021-08-22 13:46:33 +02:00
parent 401d5340fb
commit f1b61c9db7
2 changed files with 36 additions and 1 deletions

View file

@ -1,6 +1,8 @@
local Rect = require "birb.classes.2D.rect" local Rect = require "birb.classes.2D.rect"
local GuiElement = Rect:extend() local GuiElement = Rect:extend()
local TweenManager = require "birb.classes.time"
function GuiElement:new(name, x, y, w, h) function GuiElement:new(name, x, y, w, h)
GuiElement.super.new(self, x, y, w, h) GuiElement.super.new(self, x, y, w, h)
self.name = name self.name = name
@ -10,6 +12,8 @@ function GuiElement:new(name, x, y, w, h)
self.depth = 0 self.depth = 0
self.tweens = TweenManager(self)
self:register() self:register()
end end
@ -73,6 +77,7 @@ end
-- External update function -- External update function
function GuiElement:updateElement(dt) function GuiElement:updateElement(dt)
self:update(dt) self:update(dt)
self.tweens:update(dt)
end end
-- Internal update function -- Internal update function
@ -80,6 +85,21 @@ function GuiElement:update(dt)
-- Cette fonction ne contient rien par défaut -- Cette fonction ne contient rien par défaut
end end
-- TWEEN FUNCTIONS
-- Handle tweening
function GuiElement:newTween(start, duration, target, easing)
self.tweens:newTween(start, duration, target, easing)
end
function GuiElement:newMovement(start, duration, x, y, easing)
self:newTween(start, duration, {x = x, y = y}, easing)
end
function GuiElement:newSwitch(start, bools)
self:newSwitch(start, bools)
end
-- DRAW FUNCTIONS -- DRAW FUNCTIONS
-- Draw the menu and its content -- Draw the menu and its content

View file

@ -40,13 +40,28 @@ function Gui:reset()
end end
function Gui:update(dt) function Gui:update(dt)
for _, element in ipairs(self.elements) do for _, element in pairs(self.elements) do
if (element ~= nil) then if (element ~= nil) then
element:updateElement(dt) element:updateElement(dt)
end end
end end
end end
-- TWEEN FUNCTIONS
-- Handle tweening
function Gui:newTween(element, start, duration, target, easing)
self.elements[element]:newTween(start, duration, target, easing)
end
function Gui:newMovement(element, start, duration, x, y, easing)
self.elements[element]:newMovement(start, duration, x, y, easing)
end
function Gui:newSwitch(element, start, bools)
self.elements[element]:newSwitch(start, bools)
end
-- DRAW FUNCTIONS -- DRAW FUNCTIONS
-- Draw the menu and its content -- Draw the menu and its content