From aafdfc924b85a8a148a956a4de168f6ff194f164 Mon Sep 17 00:00:00 2001 From: Kazhnuz Date: Wed, 30 Oct 2024 10:15:31 +0100 Subject: [PATCH] tmp: add a minimal version of the scene It will replace the current scene system when finished --- framework/scenes/minimal.lua | 102 +++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 framework/scenes/minimal.lua diff --git a/framework/scenes/minimal.lua b/framework/scenes/minimal.lua new file mode 100644 index 0000000..4ee4252 --- /dev/null +++ b/framework/scenes/minimal.lua @@ -0,0 +1,102 @@ +-- scenes.lua :: the scene object, that aim to give a better control to the engine +-- to the different scene, without having to call too much boilerplate +-- Minimal version of the scene system, that will be used for the future version +-- of scenes + +--[[ + Copyright © 2024 Kazhnuz + + Permission is hereby granted, free of charge, to any person obtaining a copy of + this software and associated documentation files (the "Software"), to deal in + the Software without restriction, including without limitation the rights to + use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + the Software, and to permit persons to whom the Software is furnished to do so, + subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +]] + +local Scene = Object:extend() +local AnimatorManager = require "framework.scenes.animators" + +function Scene:new() + self.mouse = {} + self.mouse.x, self.mouse.y = core.screen:getMousePosition() + + self.animators = AnimatorManager() + + self.dialog = nil + + self:register() +end + +function Scene:register() + core.scenemanager:setScene(self) +end + +function Scene:updateScene(dt) + self.animators:update(dt) + self:update(dt) +end + +function Scene:drawScene() + self:draw() + core.screen:drawTransition() + self:drawOverTransition() +end + +-- Callbacks + +function Scene:init(data) + -- Empty function, can be replaced by callbacks +end + +function Scene:restored(data) + -- Empty function, can be replaced by callbacks +end + +function Scene:update(dt) + -- Empty function, can be replaced by callbacks +end + +function Scene:mousemoved(x, y, dx, dy) + -- Empty function, can be replaced by callbacks +end + +function Scene:mousepressed( x, y, button, istouch ) + -- Empty function, can be replaced by callbacks +end + +function Scene:keypressed( key, scancode, isrepeat ) + -- Empty function, can be replaced by callbacks +end + +function Scene:keyreleased( key ) + -- Empty function, can be replaced by callbacks +end + +function Scene:redraw() + -- Empty function, can be replaced by callbacks +end + +function Scene:draw() + -- Empty function, can be replaced by callbacks +end + +function Scene:drawOverTransition() + -- Empty function, can be replaced by callbacks +end + +function Scene:clear() + -- TODO: send automatic cleanups to the different elements of the scene +end + +return Scene \ No newline at end of file