project-witchy/imperium-porcorum.love/modules/menus/menu.lua

98 lines
1.8 KiB
Lua

Menu = Object:extend()
function Menu:new(x,y,w,h)
self.x = x
self.y = y
self.w = w
self.h = h
self.listWidget = {}
self.selected = 0
self.selectedPrevious = 0
self.destroyed = false
self.focus = false
self.cancel = 0
self.virtualpad = vpad()
end
function Menu:setLastWidgetCancel()
self.cancel = #self.listWidget
end
function Menu:cancelAction()
if (self.cancel ~= 0) then
self.listWidget[self.cancel]:action()
end
end
function Menu:update(dt)
-- Cette fonction ne contient rien par défaut
end
function Menu:empty()
self.listWidget = {}
self.cancel = 0
end
function Menu:resize(x,y,w,h)
self.x = x
self.y = y
self.w = w
self.h = h
end
function Menu:destroy()
self.destroyed = true
end
function Menu:draw()
-- Cette fonction ne contient rien par défaut
end
function Menu:keyreleased(key, code)
-- Cette fonction ne contient rien par défaut
end
function Menu:mousemoved(x, y)
-- Cette fonction ne contient rien par défaut
end
function Menu:mousepressed( x, y, button, istouch )
-- Cette fonction ne contient rien par défaut
end
function Menu:addWidget(newwidget)
if #self.listWidget == 0 then
self.selected = 1
end
table.insert(self.listWidget, newwidget)
end
function Menu:updateWidgets(dt)
self:clearWidgets()
for i,v in ipairs(self.listWidget) do
v.id = i
v:update(dt)
end
end
function Menu:clearWidgets() -- On retire les widgets marquées comme supprimées
for i,v in ipairs(self.listWidget) do
if (v.destroyed == true) then
table.remove(self.listWidget, i)
end
end
end
function Menu:moveCursor(new_selected)
if new_selected < 1 then
self.selected = #self.listWidget + new_selected
else
if new_selected > #self.listWidget then
self.selected = new_selected - #self.listWidget
else
self.selected = new_selected
end
end
end