̬̬̬̈̬̬̬̬̈̬̬̬̬̬̪쬪̬̬̬̪쬪 >wD@@D@DD@DDDDD@D@DDD@DDDD@DD@DDD@DD@@DDDDDDDDD@D@DD@DDD@D@DD@DD@D-- title: compact scene manager -- author: digitsensitive -- desc: a compact scene manager -- site: https://digitsensitive.github.io -- license: MIT License -- version: 0.1 -- script: lua -- scene manager --------------------------------------------------------------- function sceneManager() return { scenes = {}, current_scene = nil, register = function(self, s, n) self.scenes[n] = s end, switch = function(self, n) self.current_scene = n self.scenes[n]:init() end, init = function(self) self.scenes[self.current_scene]:init() end, update = function(self) self.scenes[self.current_scene]:update() end, draw = function(self) self.scenes[self.current_scene]:draw() end } end sMgr = sceneManager() -- menu scene ------------------------------------------------------------------ function Menu() local s = {} function s:init() -- empty end function s:update() if btnp(4) then sMgr:switch("Game") end end function s:draw() cls(0) print("> Menu Scene ...",0,50,4) end return s end -- game scene ------------------------------------------------------------------ function Game() local s = {} function s:init() -- empty end function s:update() if btnp(4) then sMgr:switch("Menu") end end function s:draw() cls(0) print("> Game Scene ...",0,50,3) end return s end -- init ------------------------------------------------------------------------ function init() sMgr:register(Menu(), "Menu") sMgr:register(Game(), "Game") sMgr:switch("Menu") end -- main ------------------------------------------------------------------------ init() function TIC() sMgr:update() -- update scene sMgr:draw() -- draw scene end