From e57a5b0b77c1ba3a2f05371c551d0e61fc9ce709 Mon Sep 17 00:00:00 2001 From: Aki Date: Mon, 22 Aug 2016 17:10:20 +0200 Subject: Graphics, animation, general improvements --- menu.lua | 36 ++++++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 12 deletions(-) (limited to 'menu.lua') diff --git a/menu.lua b/menu.lua index 87369da..9c7481b 100644 --- a/menu.lua +++ b/menu.lua @@ -24,12 +24,32 @@ function Menu:delete() end function Menu:load(name) local name = "config/" .. (name or "menumain") .. ".lua" local menu = love.filesystem.load(name) - self.elements = menu() + self.elements = menu(self) + self.elements[self.active]:focus() +end + +-- Cycle elements +function Menu:next() + self.elements[self.active]:blur() + self.active = (self.active%#self.elements)+1 + self.elements[self.active]:focus(true) +end +function Menu:previous() + self.elements[self.active]:blur() + if self.active == 1 then + self.active = #self.elements + else + self.active = self.active - 1 + end self.elements[self.active]:focus() end -- LÖVE2D callbacks -function Menu:update(dt) end +function Menu:update(dt) + for _,element in pairs(self.elements) do + element:update(dt) + end +end function Menu:draw() local scale = self.scale love.graphics.setFont(Font) @@ -41,18 +61,10 @@ end -- Controller callbacks function Menu:controlpressed(set, action, key) if action == "down" then - self.elements[self.active]:blur() - self.active = (self.active%#self.elements)+1 - self.elements[self.active]:focus() + self:next() end if action == "up" then - self.elements[self.active]:blur() - if self.active == 1 then - self.active = #self.elements - else - self.active = self.active - 1 - end - self.elements[self.active]:focus() + self:previous() end for _,element in pairs(self.elements) do element:controlpressed(set, action, key) -- cgit v1.1