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.isVisible = true self.screen = nil self.depth = 0 self:register() end function GuiElement:getGui() local scene = core.scenemanager.nextScene or core.scenemanager.currentScene return scene.gui end function GuiElement:register() local gui = self:getGui() self.creationId = gui:addElement(self.name, self) end function GuiElement:destroy() local gui = self:getGui() gui:removeElement(self.name) if (self.screen == nil) then self.screen:removeElement(self.name) end end -- VISIBILITY/ACTIVITY -- Handle drawing and how we interact with function GuiElement:setDepth(depth) self.depth = depth or 0 end function GuiElement:getVisibility() if (self.screen ~= nil) then return (self.isVisible and self.screen.isVisible) else return self.isVisible end end function GuiElement:setVisibility(visibility) self.isVisible = visibility 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 function GuiElement:looseFocus() if (self:haveFocus()) then local gui = self:getGui() gui.focusedMenu = nil end 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