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

144 lines
2.8 KiB
Lua

local 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.sound = {}
self.sound.asset = nil
self.sound.active = false
self.canvas = {}
self.canvas.texture = nil
self.canvas.needRedraw = true
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()
if self.canvas.needRedraw == true then
CScreen:cease()
self:drawCanvas()
self.canvas.needRedraw = false
CScreen:apply()
end
love.graphics.draw(self.canvas.texture, self.x, self.y)
end
function Menu:drawCanvas()
end
function Menu:keyreleased(key)
-- 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:setCursor(cursorid)
self.selected = cursorid --math.max(1, math.min(cursorid, #self.listWidget))
end
function Menu:moveCursor(new_selected)
self:playSelectSound()
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
self.canvas.needRedraw = true
end
function Menu:setSound(soundasset)
self.sound.active = true
self.sound.asset = soundasset
end
function Menu:playSelectSound()
if self.sound.active == true then
self.sound.asset:setVolume(game.options.data.audio.sfx / 100)
love.audio.play( self.sound.asset )
end
end
function Menu:resetView()
-- ne sert à rien ici, c'est juste pour éviter des crash
end
function Menu:moveView()
-- ne sert à rien ici, c'est juste pour éviter des crash
end
return Menu