From 4e69182a6d36966847430f01b440a9cdac0e4cdc Mon Sep 17 00:00:00 2001 From: Aki Date: Tue, 11 Jul 2017 01:21:31 +0200 Subject: Moved scene managment to SceneManager (non-existant) --- not/SceneManager.lua | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 not/SceneManager.lua (limited to 'not/SceneManager.lua') diff --git a/not/SceneManager.lua b/not/SceneManager.lua new file mode 100644 index 0000000..0a6cb4b --- /dev/null +++ b/not/SceneManager.lua @@ -0,0 +1,10 @@ +-- Pretend you didn't see this +-- This is work for scene manager +-- TODO: Create SceneManager or similar class. +Scene = nil +function changeScene (scene) + if Scene ~= nil then + Scene:delete() + end + Scene = scene +end -- cgit v1.1 From 47d4e1c229adfffb70b3c984d00049bcebcfc183 Mon Sep 17 00:00:00 2001 From: Aki Date: Wed, 12 Jul 2017 09:04:23 +0200 Subject: All music playing moved to single instance of MusicPlayer --- not/SceneManager.lua | 2 ++ 1 file changed, 2 insertions(+) (limited to 'not/SceneManager.lua') diff --git a/not/SceneManager.lua b/not/SceneManager.lua index 0a6cb4b..755548a 100644 --- a/not/SceneManager.lua +++ b/not/SceneManager.lua @@ -2,6 +2,8 @@ -- This is work for scene manager -- TODO: Create SceneManager or similar class. Scene = nil +musicPlayer = require("not.MusicPlayer")() + function changeScene (scene) if Scene ~= nil then Scene:delete() -- cgit v1.1 From 094f9326d1e3ae6e451b21192b288220a8fab12e Mon Sep 17 00:00:00 2001 From: Aki Date: Wed, 12 Jul 2017 09:31:32 +0200 Subject: Basic SceneManager created and partialy replaced old scene managment system --- not/SceneManager.lua | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) (limited to 'not/SceneManager.lua') diff --git a/not/SceneManager.lua b/not/SceneManager.lua index 755548a..367a4c0 100644 --- a/not/SceneManager.lua +++ b/not/SceneManager.lua @@ -1,12 +1,17 @@ --- Pretend you didn't see this --- This is work for scene manager --- TODO: Create SceneManager or similar class. -Scene = nil -musicPlayer = require("not.MusicPlayer")() +--- `SceneManager` +-- Used for changing single active scene. +-- TODO: Extend functionality for more than one active scene (eg. overlay menu). +SceneManager = require "not.Object":extends() -function changeScene (scene) - if Scene ~= nil then - Scene:delete() +function SceneManager:changeScene (scene) + if self.scene ~= nil then + self.scene:delete() end - Scene = scene + self.scene = scene end + +function SceneManager:getScene () + return self.scene +end + +return SceneManager -- cgit v1.1 From ea694c3659c801effaaf3361d3713f20517de3f5 Mon Sep 17 00:00:00 2001 From: Aki Date: Wed, 12 Jul 2017 09:52:06 +0200 Subject: SceneManager has Controller and Love2D callbacks --- not/SceneManager.lua | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'not/SceneManager.lua') diff --git a/not/SceneManager.lua b/not/SceneManager.lua index 367a4c0..2e429c2 100644 --- a/not/SceneManager.lua +++ b/not/SceneManager.lua @@ -14,4 +14,20 @@ function SceneManager:getScene () return self.scene end +function SceneManager:update (dt) + self:getScene():update(dt) +end + +function SceneManager:draw () + self:getScene():draw() +end + +function SceneManager:controlpressed (set, action, key) + self:getScene():controlpressed(set, action, key) +end + +function SceneManager:controlreleased (set, action, key) + self:getScene():controlreleased(set, action, key) +end + return SceneManager -- cgit v1.1 From 9af261cd204b999e6b2b5a44d5c5eb768f84c49d Mon Sep 17 00:00:00 2001 From: Aki Date: Wed, 12 Jul 2017 16:00:51 +0200 Subject: Created Scene class extended SceneManager a little bit to support multiple scenes --- not/SceneManager.lua | 44 ++++++++++++++++++++++++++++++++++---------- 1 file changed, 34 insertions(+), 10 deletions(-) (limited to 'not/SceneManager.lua') diff --git a/not/SceneManager.lua b/not/SceneManager.lua index 2e429c2..c9a8e20 100644 --- a/not/SceneManager.lua +++ b/not/SceneManager.lua @@ -3,31 +3,55 @@ -- TODO: Extend functionality for more than one active scene (eg. overlay menu). SceneManager = require "not.Object":extends() +function SceneManager:new () + self.scenes = {} +end + +-- This function should be removed when multiple scenes will be handled properly by SceneManager and other things. function SceneManager:changeScene (scene) - if self.scene ~= nil then - self.scene:delete() - end - self.scene = scene + table.remove(self.scenes, #self.scenes) + return self:addScene(scene) +end + +function SceneManager:addScene (scene) + table.insert(self.scenes, scene) + return scene end -function SceneManager:getScene () - return self.scene +function SceneManager:getAllScenes () + return self.scenes end function SceneManager:update (dt) - self:getScene():update(dt) + for _,scene in pairs(self:getAllScenes()) do + if not scene:isSleeping() then + scene:update(dt) + end + end end function SceneManager:draw () - self:getScene():draw() + for _,scene in pairs(self:getAllScenes()) do + if not scene:isHidden() then + scene:draw() + end + end end function SceneManager:controlpressed (set, action, key) - self:getScene():controlpressed(set, action, key) + for _,scene in pairs(self:getAllScenes()) do + if not scene:isInputDisabled() then + scene:controlpressed(set, action, key) + end + end end function SceneManager:controlreleased (set, action, key) - self:getScene():controlreleased(set, action, key) + for _,scene in pairs(self:getAllScenes()) do + if not scene:isInputDisabled() then + scene:controlreleased(set, action, key) + end + end end return SceneManager -- cgit v1.1 From 1aa2ddfd920899e61295d876f3433dcab6dd6ed8 Mon Sep 17 00:00:00 2001 From: Aki Date: Sat, 15 Jul 2017 01:21:01 +0200 Subject: Win screen is now handled by Scene Issue with MusicPlayer calls in Scene constructor (not solved) --- not/SceneManager.lua | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'not/SceneManager.lua') diff --git a/not/SceneManager.lua b/not/SceneManager.lua index c9a8e20..c076448 100644 --- a/not/SceneManager.lua +++ b/not/SceneManager.lua @@ -18,6 +18,11 @@ function SceneManager:addScene (scene) return scene end +-- Not nice, not nice. +function SceneManager:removeTopScene () + table.remove(self.scenes, #self.scenes) +end + function SceneManager:getAllScenes () return self.scenes end -- cgit v1.1