epervier-old/birb/modules/menusystem/parent.lua

120 lines
2.4 KiB
Lua

local Rect = require "birb.classes.2D.rect"
local GuiElement = Rect:extend()
function GuiElement:new(name, x, y, w, h)
GuiElement.super.new(self, x, y, w, h)
self.name = name
self.isDestroyed = false
self.isVisible = true
self.isActive = true
self.isLocked = false
self.isAlwaysVisible = false
self.depth = 0
self:register()
end
function GuiElement:getGui()
local scene = core.scenemanager.currentScene
return scene.menusystem
end
function GuiElement:register()
local gui = self:getGui()
gui:addMenu(self.name, self)
end
function GuiElement:destroy()
self.destroyed = true
end
-- VISIBILITY/ACTIVITY
-- Handle drawing and how we interact with
function GuiElement:setDepth(depth)
self.depth = depth or 0
end
function GuiElement:setVisibility(visibility)
if self.isLocked == false and self.isAlwaysVisible == false then
self.isVisible = visibility
else
-- if the element is locked (thus is always active), it should also
-- be always visible.
self.isVisible = true
end
end
function GuiElement:setActivity(activity)
if self.isLocked == false then
self.isActive = activity
else
self.isActive = true
end
end
function GuiElement:lock(lock)
self.isLocked = lock
end
function GuiElement:lockVisibility(lock)
self.isAlwaysVisible = lock
end
function GuiElement:getFocus()
local gui = self:getGui()
gui.focusedMenu = self.name
end
function GuiElement:haveFocus()
local gui = self:getGui()
return (gui.focusedMenu == self.name)
end
-- UPDATE FUNCTIONS
-- Update the menu every game update
-- External update function
function GuiElement:updateElement(dt)
self:update(dt)
end
-- Internal update function
function GuiElement:update(dt)
-- Cette fonction ne contient rien par défaut
end
-- DRAW FUNCTIONS
-- Draw the menu and its content
function GuiElement:drawElement()
self:draw()
end
function GuiElement:draw()
-- nothing here
end
-- KEYBOARD FUNCTIONS
-- Handle key press
function GuiElement:keyreleased(key)
-- Cette fonction ne contient rien par défaut
end
-- MOUSE FUNCTIONS
-- Handle pointers (clic/touch)
function GuiElement:mousemoved(x, y)
-- Cette fonction ne contient rien par défaut
end
function GuiElement:mousepressed(x, y, button, istouch)
-- Cette fonction ne contient rien par défaut
end
return GuiElement