diff --git a/gamecore/modules/scenes.lua b/gamecore/modules/scenes.lua index 60f378c..5e5da95 100644 --- a/gamecore/modules/scenes.lua +++ b/gamecore/modules/scenes.lua @@ -36,6 +36,9 @@ function Scene:new() self.menusystem = MenuSystem() self.keys = core.input:getKeyList() + self.inputLocked = false + self.inputLockedTimer = 0 + self:register() end @@ -63,9 +66,33 @@ function Scene:clear() end +function Scene:setKeys() + if (self.inputLocked) then + self.keys = core.input.fakekeys + self.inputLockedTimer = self.inputLockedTimer - 1 + if (self.inputLockedTimer <= 0 ) then + self.inputLockedTimer = false + end + else + self.keys = core.input.keys + end + + self.menusystem.keys = self.keys +end + +function Scene:getKeys() + if (self.inputLocked) then + return self.keys + else + return core.input.fakekeys + end +end + function Scene:flushKeys() core.input:flushKeys() self.keys = core.input.keys + self.inputLockedTimer = 1 + self.inputLocked = true end return Scene diff --git a/gamecore/scenemanager.lua b/gamecore/scenemanager.lua index 008d0a2..dd24e66 100644 --- a/gamecore/scenemanager.lua +++ b/gamecore/scenemanager.lua @@ -54,9 +54,7 @@ end function SceneManager:update(dt) if (self.currentScene ~= nil) then - local keys = self.controller.input.keys - self.currentScene.keys = keys - self.currentScene.menusystem.keys = keys + self.currentScene:setKeys() self.currentScene.assets:update(dt) self.currentScene.menusystem:update(dt) self.currentScene:update(dt)