Refonte pour utiliser le systeme de GUI #112
8 changed files with 48 additions and 27 deletions
|
@ -33,6 +33,7 @@ local TransformDataStruct = require "birb.structures.tween"
|
|||
function Gui:new(scene)
|
||||
self.scene = scene
|
||||
self:reset()
|
||||
self.sfx = {}
|
||||
end
|
||||
|
||||
function Gui:reset()
|
||||
|
@ -125,6 +126,23 @@ function Gui:showScreen(screenname)
|
|||
self.screens[screenname]:show()
|
||||
end
|
||||
|
||||
-- SOUND FUNCTIONS
|
||||
-- Handle SFX
|
||||
|
||||
function Gui:addSFX(guiName, sfxName)
|
||||
self.sfx[guiName] = sfxName
|
||||
end
|
||||
|
||||
function Gui:playSFX(type)
|
||||
local sfxName = self.sfx[type]
|
||||
if (sfxName ~= nil) then
|
||||
local sfx = self.scene.assets.sfx[sfxName]
|
||||
if (sfx ~= nil) then
|
||||
sfx:play()
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- KEYBOARD FUNCTIONS
|
||||
-- Handle keyboard
|
||||
|
||||
|
|
|
@ -85,18 +85,22 @@ function FlowBox:moveByKeys(key)
|
|||
local col, line = self.view:getCoord(self.widget:getSelected())
|
||||
if key == 'left' then
|
||||
self:moveCursor2D(col - 1, line)
|
||||
self:playNavigationSound()
|
||||
end
|
||||
|
||||
if key == 'right' then
|
||||
self:moveCursor2D(col + 1, line)
|
||||
self:playNavigationSound()
|
||||
end
|
||||
|
||||
if key == 'up' then
|
||||
self:moveCursor2D(col, line - 1)
|
||||
self:playNavigationSound()
|
||||
end
|
||||
|
||||
if key == 'down' then
|
||||
self:moveCursor2D(col, line + 1)
|
||||
self:playNavigationSound()
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -150,18 +150,22 @@ function GridBox:keyreleased(key, code)
|
|||
local col, line = self.cursor.x, self.cursor.y
|
||||
if key == 'left' then
|
||||
self:moveCol(-1)
|
||||
self:playNavigationSound()
|
||||
end
|
||||
|
||||
if key == 'right' then
|
||||
self:moveCol(1)
|
||||
self:playNavigationSound()
|
||||
end
|
||||
|
||||
if key == 'up' then
|
||||
self:moveLine(-1)
|
||||
self:playNavigationSound()
|
||||
end
|
||||
|
||||
if key == 'down' then
|
||||
self:moveLine(1)
|
||||
self:playNavigationSound()
|
||||
end
|
||||
|
||||
if key == "A" and self.widget:getSelected() <= self.widget:lenght() then
|
||||
|
|
|
@ -60,10 +60,12 @@ end
|
|||
function HListBox:moveByKeys(key, code)
|
||||
if key == 'left' then
|
||||
self.widget:moveCursor(-1)
|
||||
self:playNavigationSound()
|
||||
end
|
||||
|
||||
if key == 'right' then
|
||||
self.widget:moveCursor(1)
|
||||
self:playNavigationSound()
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -60,10 +60,12 @@ end
|
|||
function ListBox:moveByKeys(key)
|
||||
if key == 'up' then
|
||||
self.widget:moveCursor(-1)
|
||||
self:playNavigationSound()
|
||||
end
|
||||
|
||||
if key == 'down' then
|
||||
self.widget:moveCursor(1)
|
||||
self:playNavigationSound()
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -84,7 +86,6 @@ function ListBox:drawTexture()
|
|||
local listWidget = self.widget:getList(self.view.firstSlot, self.view.slotNumber)
|
||||
|
||||
for _, widget in ipairs(listWidget) do
|
||||
print(self.canvas.padding, widgety)
|
||||
widget:drawWidget(self.canvas.padding, widgety, self.w, self.widgetSize.h)
|
||||
widgety = widgety + self.widgetSize.h
|
||||
end
|
||||
|
@ -95,7 +96,7 @@ function ListBox:getGraphicalCursorPosition()
|
|||
local w, h = self:getWidgetSize()
|
||||
local y = (self.widget:getSelected() - self.view.firstSlot) * h
|
||||
|
||||
return self.x,self.y + y, w, h
|
||||
return self.x - self.ox,self.y + y - self.oy, w, h
|
||||
end
|
||||
|
||||
return ListBox
|
||||
|
|
|
@ -74,6 +74,7 @@ end
|
|||
function Page:action(id, type)
|
||||
if (self:widgetExist(id)) then
|
||||
self.widgets[id]:action(type)
|
||||
self.widgets[id]:playSFX()
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -39,7 +39,6 @@ function Menu:new(name, x, y, w, h)
|
|||
self.widgetSize = {}
|
||||
self:updateWidgetSize()
|
||||
|
||||
self:resetSound()
|
||||
self:initCanvas()
|
||||
end
|
||||
|
||||
|
@ -141,7 +140,7 @@ end
|
|||
-- UPDATE FUNCTIONS
|
||||
|
||||
function Menu:updateElement(dt)
|
||||
self:update(dt)
|
||||
Menu.super.updateElement(self, dt)
|
||||
self.widget:update(dt)
|
||||
if (self.canvas.needRedraw or self.canvas.isAnimated) then
|
||||
self:redraw()
|
||||
|
@ -204,7 +203,6 @@ function Menu:setCursor(cursorid)
|
|||
end
|
||||
|
||||
function Menu:moveCursor(new_selected)
|
||||
self:playNavigationSound()
|
||||
self.widget:moveCursorAbsolute(new_selected)
|
||||
self.canvas.needRedraw = true
|
||||
end
|
||||
|
@ -212,25 +210,13 @@ end
|
|||
-- SOUND FUNCTION
|
||||
-- Handle SFX
|
||||
|
||||
function Menu:resetSound()
|
||||
self.sound = {}
|
||||
self.sound.active = false
|
||||
self.sound.asset = nil
|
||||
end
|
||||
|
||||
function Menu:setSoundFromSceneAssets(name)
|
||||
self:setSound(self.menusystem.scene.assets:getWithType(name, "sfx"))
|
||||
end
|
||||
|
||||
function Menu:setSound(soundasset)
|
||||
self.sound.active = true
|
||||
self.sound.asset = soundasset
|
||||
end
|
||||
|
||||
function Menu:playNavigationSound()
|
||||
if self.sound.active == true then
|
||||
self.sound.asset:play()
|
||||
self:playSFX("navigate")
|
||||
end
|
||||
|
||||
function Menu:playSFX(name)
|
||||
local gui = self:getGui()
|
||||
gui:playSFX(name)
|
||||
end
|
||||
|
||||
-- VIEW FUNCTIONS
|
||||
|
|
|
@ -42,6 +42,7 @@ function BaseWidget:new(menuName)
|
|||
self.order = 0
|
||||
self:register()
|
||||
self.func = nil
|
||||
self.type = "select"
|
||||
end
|
||||
|
||||
function BaseWidget:setFunc(func)
|
||||
|
@ -106,9 +107,7 @@ function BaseWidget:drawCanvas()
|
|||
end
|
||||
|
||||
function BaseWidget:selectAction()
|
||||
if (self.func ~= nil) then
|
||||
self.func(self)
|
||||
end
|
||||
-- Do nothing
|
||||
end
|
||||
|
||||
-- DRAW WIDGETS
|
||||
|
@ -152,8 +151,14 @@ end
|
|||
-- ACTION FUNCTION
|
||||
-- Functions to handle actions and selection.
|
||||
|
||||
function BaseWidget:playSFX()
|
||||
self.menu:playSFX(self.type)
|
||||
end
|
||||
|
||||
function BaseWidget:action(source)
|
||||
--self:destroy()
|
||||
if (self.func ~= nil) then
|
||||
self.func(self)
|
||||
end
|
||||
end
|
||||
|
||||
function BaseWidget:destroy()
|
||||
|
|
Loading…
Reference in a new issue