sonic-bluestreak/sonic-boost.love/core/modules/menusystem/init.lua

100 lines
2.3 KiB
Lua

local MenuSystem = {}
local MenuController = Object:extend()
local cwd = (...):gsub('%.init$', '') .. "."
MenuSystem.Parent = require(cwd .. "menu")
MenuSystem.ListBox = require(cwd .. "listbox")
MenuSystem.FlowBox = require(cwd .. "flowbox")
MenuSystem.Grid = require(cwd .. "grid")
MenuSystem.TextMenu = require(cwd .. "textmenu")
MenuSystem.Widget = require(cwd .. "widgets")
--local VirtualPad = require "modules.virtualpad"
function MenuController:new()
self.menus = {}
self.virtualpad = game.input --VirtualPad(1)
end
function MenuController:reset()
self.menus = {}
self.virtualpad = game.input --VirtualPad(1)
end
function MenuController:addMenu(menu)
table.insert(self.menus, menu)
end
function MenuController:update(dt)
self:clear()
for i,v in ipairs(self.menus) do
v.id = i
v:update(dt)
v:updateWidgets(dt)
if v.focus == true then
for k,w in pairs(self.virtualpad.keys) do
if self.virtualpad.keys[k].isPressed then
v:keyreleased(k)
end
end
end
end
end
function MenuController:clear()
-- On retire les entitées marquées comme supprimées
for i,v in ipairs(self.menus) do
if (v.destroyed == true) then
table.remove(self.menus, i)
end
end
end
function MenuController:updateList()
for i,v in ipairs(self.menus) do
v.id = i
end
end
function MenuController:keyreleased(key, code)
-- TODO:depreciated function
end
function MenuController:mousemoved(x, y, dx, dy)
for i,v in ipairs(self.menus) do
if (x > v.x) and (x < v.x + v.w) and (y > v.y) and (y < v.y + v.h) then
v:mousemoved(x - v.x, y - v.y)
for j,u in ipairs(self.menus) do
u.focus = false
end
v.focus = true
end
end
end
function MenuController:mousepressed( x, y, button, istouch )
for i,v in ipairs(self.menus) do
if (x > v.x) and (x < v.x + v.w) and (y > v.y) and (y < v.y + v.h) then
v:mousepressed(x - v.x, y - v.y, button, istouch )
for j,u in ipairs(self.menus) do
u.focus = false
end
v.focus = true
end
end
end
function MenuController:draw(dt) -- On dessine les entitées
for i,v in ipairs(self.menus) do
v.id = i
v:draw(dt)
end
end
MenuSystem.Controller = MenuController
return MenuSystem