From c7ed391e87431921615d9a36b53e85fc028e2f46 Mon Sep 17 00:00:00 2001 From: emb <> Date: Wed, 18 Nov 2015 23:06:02 -0600 Subject: [PATCH] Adding event callback handling. Crash with animations exists (must stop animation too) --- RetroFE/Source/CMakeLists.txt | 4 ++++ RetroFE/Source/LuaEvents.cpp | 6 +++--- RetroFE/Source/LuaEvents.h | 12 ------------ RetroFE/Source/RetroFE.cpp | 13 ++++++++++--- RetroFE/Source/RetroFE.h | 2 ++ 5 files changed, 19 insertions(+), 18 deletions(-) delete mode 100644 RetroFE/Source/LuaEvents.h diff --git a/RetroFE/Source/CMakeLists.txt b/RetroFE/Source/CMakeLists.txt index f5284c8..637e831 100644 --- a/RetroFE/Source/CMakeLists.txt +++ b/RetroFE/Source/CMakeLists.txt @@ -98,9 +98,11 @@ set(RETROFE_HEADERS "${RETROFE_DIR}/Source/Graphics/Component/ComponentFactory.h" "${RETROFE_DIR}/Source/Lua/Lua.h" "${RETROFE_DIR}/Source/Lua/LuaDisplay.h" + "${RETROFE_DIR}/Source/Lua/LuaEvent.h" "${RETROFE_DIR}/Source/Lua/LuaImage.h" "${RETROFE_DIR}/Source/Lua/LuaLog.h" "${RETROFE_DIR}/Source/RetroFE.h" + "${RETROFE_DIR}/Source/StateMachine.h" "${RETROFE_DIR}/Source/SDL.h" "${RETROFE_DIR}/Source/Version.h" ) @@ -115,9 +117,11 @@ set(RETROFE_SOURCES "${RETROFE_DIR}/Source/Lua/Lua.cpp" "${RETROFE_DIR}/Source/Lua/LuaDisplay.cpp" "${RETROFE_DIR}/Source/Lua/LuaImage.cpp" + "${RETROFE_DIR}/Source/Lua/LuaEvent.cpp" "${RETROFE_DIR}/Source/Lua/LuaLog.cpp" "${RETROFE_DIR}/Source/Main.cpp" "${RETROFE_DIR}/Source/RetroFE.cpp" + "${RETROFE_DIR}/Source/StateMachine.cpp" "${RETROFE_DIR}/Source/SDL.cpp" "${RETROFE_DIR}/Source/Version.cpp" ) diff --git a/RetroFE/Source/LuaEvents.cpp b/RetroFE/Source/LuaEvents.cpp index e2f7369..741b28f 100644 --- a/RetroFE/Source/LuaEvents.cpp +++ b/RetroFE/Source/LuaEvents.cpp @@ -1,11 +1,11 @@ -#include "LuaEvents.h" +#include "LuaEvent.h" -void LuaEvents::registerOnInit(std::string functionName) +void LuaEvent::registerOnInit(std::string functionName) { onInit_.push_back(functionName); } -void LuaEvents::triggerOnInit(lua_State *l) +void LuaEvent::triggerOnInit(lua_State *l) { for(unsigned int i = 0; i < onInit_.size(); ++i) { lua_getglobal(l, onInit_[i].c_str()); diff --git a/RetroFE/Source/LuaEvents.h b/RetroFE/Source/LuaEvents.h deleted file mode 100644 index 26e3381..0000000 --- a/RetroFE/Source/LuaEvents.h +++ /dev/null @@ -1,12 +0,0 @@ -#pragma once -#include "Lua.h" -#include -#include - -class LuaEvents { -public: - void registerOnInit(std::string functionName); - void triggerOnInit(lua_State *l); -private: - std::vector onInit_; -}; \ No newline at end of file diff --git a/RetroFE/Source/RetroFE.cpp b/RetroFE/Source/RetroFE.cpp index 78cd3d0..5f3c9fa 100644 --- a/RetroFE/Source/RetroFE.cpp +++ b/RetroFE/Source/RetroFE.cpp @@ -15,6 +15,7 @@ */ #include "RetroFE.h" +#include "StateMachine.h" #include "Utility/Log.h" #include "Utility/Utils.h" #include "SDL.h" @@ -23,6 +24,7 @@ #include "Lua/LuaDisplay.h" #include "Lua/LuaImage.h" #include "Lua/LuaLog.h" +#include "Lua/LuaEvent.h" #include #ifdef __linux @@ -73,9 +75,7 @@ const luaL_Reg RetroFE::luaImageFuncs[] = { {"setAlpha", LuaImage::setAlpha}, {"addAnimation", LuaImage::addAnimation}, {"animate", LuaImage::animate}, -#if 0 - {"delete", lua_imageDelete}, -#endif + {"destroy", LuaImage::destroy}, {NULL, NULL} }; @@ -121,6 +121,9 @@ void RetroFE::reloadLuaScripts() std::string path = config_.absolutePath + "/layouts/LUATest/Page.lua"; luaL_loadfile(lua_.state, path.c_str()); lua_pcall(lua_.state, 0, LUA_MULTRET, 0); + + luaEvent_.registerCallback("onInitEnter", "onInitEnter", "onInitEnterComplete"); + luaEvent_.registerCallback("onInitExit", "onInitExit", "onInitExitComplete"); } RetroFE::RetroFE(Configuration &c) @@ -139,6 +142,7 @@ void RetroFE::run() if(!SDL::initialize(config_)) return; initializeLua(); + StateMachine state(lua_.state, &luaEvent_); reloadLuaScripts(); // events.triggerOnInit(lua_.state); @@ -148,6 +152,7 @@ void RetroFE::run() double deltaTime = 0; while(!quit) { + lastTime = currentTime; currentTime = static_cast(SDL_GetTicks()) / 1000; @@ -163,6 +168,8 @@ void RetroFE::run() deltaTime = currentTime - lastTime; + state.update((float)deltaTime); + SDL_LockMutex(SDL::getMutex()); SDL_SetRenderDrawColor(SDL::getRenderer(), 0x0, 0x0, 0x00, 0xFF); SDL_RenderClear(SDL::getRenderer()); diff --git a/RetroFE/Source/RetroFE.h b/RetroFE/Source/RetroFE.h index 43cba46..ba4c00e 100644 --- a/RetroFE/Source/RetroFE.h +++ b/RetroFE/Source/RetroFE.h @@ -16,6 +16,7 @@ #pragma once #include "Lua/Lua.h" +#include "Lua/LuaEvent.h" #include "Database/Configuration.h" #include "Graphics/Component/ComponentFactory.h" #include @@ -33,6 +34,7 @@ private: ComponentFactory factory_; Configuration &config_; Lua lua_; + LuaEvent luaEvent_; static const luaL_Reg luaDisplayFuncs[]; static const luaL_Reg luaLogFuncs[]; static const luaL_Reg luaImageFuncs[];