diff --git a/RetroFE/Source/Graphics/Component/Image.cpp b/RetroFE/Source/Graphics/Component/Image.cpp index 0668997..8530a46 100644 --- a/RetroFE/Source/Graphics/Component/Image.cpp +++ b/RetroFE/Source/Graphics/Component/Image.cpp @@ -74,8 +74,8 @@ void Image::draw() rect.x = info.x; rect.y = info.y; - rect.h = info.width; - rect.w = info.height; + rect.w = info.width; + rect.h = info.height; SDL::renderCopy(texture_, (unsigned char)(info.alpha*255), NULL, &rect, info.rotate); } diff --git a/RetroFE/Source/Lua/LuaAnimate.cpp b/RetroFE/Source/Lua/LuaAnimate.cpp index 8eae58c..c0d56e6 100644 --- a/RetroFE/Source/Lua/LuaAnimate.cpp +++ b/RetroFE/Source/Lua/LuaAnimate.cpp @@ -64,7 +64,11 @@ Animation *LuaAnimate::create(lua_State *l) //todo: NEED MEMORY TYPE CHECKING LIKE OTHER LUA CLASSES int LuaAnimate::start(lua_State *l) { - Component *component = (Component *)lua_tointeger(l, 1) ; + Component *component = (Component *)lua_touserdata(l, 1) ; + + Logger::write(Logger::ZONE_ERROR, "LuaAnimate", "Invalid component id"); + if(!component) return 0; + bool loop = (lua_toboolean(l, 2) != 0); //todo: make sure it is a component Animation *a = (Animation *)create(l); @@ -72,9 +76,11 @@ int LuaAnimate::start(lua_State *l) if(a) { a->component = component; AnimationChain *chain = manager->start(a, loop, false); - lua_pushinteger(l, (int)chain); + lua_pushlightuserdata(l, chain); + return 1; } - return 1; + + return 0; } int LuaAnimate::startChain(lua_State *l) @@ -85,7 +91,7 @@ int LuaAnimate::startChain(lua_State *l) int LuaAnimate::destroy(lua_State *l) { - Animation *a = (Animation *)luaL_checkinteger(l, 1); + Animation *a = (Animation *)lua_touserdata(l, 1); delete a; return 1; diff --git a/RetroFE/Source/Lua/LuaCollection.cpp b/RetroFE/Source/Lua/LuaCollection.cpp index b2d6bd5..177dcd9 100644 --- a/RetroFE/Source/Lua/LuaCollection.cpp +++ b/RetroFE/Source/Lua/LuaCollection.cpp @@ -24,7 +24,7 @@ int LuaCollection::load(lua_State *l) int LuaCollection::getSize(lua_State *l) { - CollectionInfo *i = (CollectionInfo *)luaL_checkinteger(l, 1); + CollectionInfo *i = (CollectionInfo *)lua_touserdata(l, 1); lua_pushinteger(l, (int)i->items.size()); @@ -33,7 +33,7 @@ int LuaCollection::getSize(lua_State *l) int LuaCollection::getName(lua_State *l) { - CollectionInfo *i = (CollectionInfo *)luaL_checkinteger(l, 1); + CollectionInfo *i = (CollectionInfo *)lua_touserdata(l, 1); lua_pushstring(l, i->name.c_str()); @@ -42,7 +42,7 @@ int LuaCollection::getName(lua_State *l) int LuaCollection::getItemAt(lua_State *l) { - CollectionInfo *i = (CollectionInfo *)luaL_checkinteger(l, 1); + CollectionInfo *i = (CollectionInfo *)lua_touserdata(l, 1); int index = (int)luaL_checkinteger(l, 2); Item *item = i->items.at(index); @@ -76,7 +76,7 @@ int LuaCollection::getItemAt(lua_State *l) int LuaCollection::destroy(lua_State *l) { - CollectionInfo *i = (CollectionInfo *)luaL_checkinteger(l, 1); + CollectionInfo *i = (CollectionInfo *)lua_touserdata(l, 1); cib->destroyCollection(i); return 0; diff --git a/RetroFE/Source/Lua/LuaEvent.cpp b/RetroFE/Source/Lua/LuaEvent.cpp index 65001fe..f2a8231 100644 --- a/RetroFE/Source/Lua/LuaEvent.cpp +++ b/RetroFE/Source/Lua/LuaEvent.cpp @@ -10,7 +10,7 @@ void LuaEvent::trigger(lua_State *l, std::string type) void LuaEvent::trigger(lua_State *l, std::string type, void *value) { lua_getglobal(l, type.c_str()); - lua_pushinteger(l, (int)value); + lua_pushlightuserdata(l, value); lua_pcall(l, 1, 0, 0); } @@ -34,12 +34,5 @@ bool LuaEvent::isBusy(lua_State *l, std::string type) } return retval; - // arguments - //lua_pushnumber(l, x); - //lua_pushnumber(l, y); - // call the function with 2 arguments, return 1 result - //lua_call(L, 2, 1); - //sum = (int)lua_tointeger(L, -1); - //lua_pop(L, 1); } diff --git a/RetroFE/Source/Lua/LuaImage.cpp b/RetroFE/Source/Lua/LuaImage.cpp index c71819c..ecf1336 100644 --- a/RetroFE/Source/Lua/LuaImage.cpp +++ b/RetroFE/Source/Lua/LuaImage.cpp @@ -16,14 +16,14 @@ int LuaImage::create(lua_State *l) { Image *i = factory->createImage(); - lua_pushinteger(l, (int)i); + lua_pushlightuserdata(l, i); return 1; } int LuaImage::destroy(lua_State *l) { - Image *i = (Image *)luaL_checkinteger(l, 1); + Image *i = (Image *)lua_touserdata(l, 1); factory->deleteComponent(i); return 0; @@ -31,10 +31,11 @@ int LuaImage::destroy(lua_State *l) int LuaImage::loadFile(lua_State *l) { - Image *i = (Image *)luaL_checkinteger(l, 1); + Image *i = (Image *)lua_touserdata(l, 1); std::string file = luaL_checkstring(l, 2); bool result = i->load(file); + i->getOriginalDimensions(i->info.width, i->info.height); lua_pushboolean(l, result); return 1; @@ -43,7 +44,7 @@ int LuaImage::loadFile(lua_State *l) int LuaImage::loadType(lua_State *l) { bool result = false; - Image *i = (Image *)luaL_checkinteger(l, 1); + Image *i = (Image *)lua_touserdata(l, 1); CollectionInfo *ci = (CollectionInfo *)luaL_checkinteger(l, 2); std::string type = luaL_checkstring(l, 3); std::string name = luaL_checkstring(l, 4); @@ -66,6 +67,7 @@ int LuaImage::loadType(lua_State *l) if(Utils::findMatchingFile(prefix, extensions, file)) { result = i->load(file); + i->getOriginalDimensions(i->info.width, i->info.height); } @@ -77,7 +79,7 @@ int LuaImage::loadType(lua_State *l) int LuaImage::isLoaded(lua_State *l) { - Image *i = (Image *)luaL_checkinteger(l, 1); + Image *i = (Image *)lua_touserdata(l, 1); lua_pushboolean(l, i->isLoaded()); @@ -87,7 +89,7 @@ int LuaImage::isLoaded(lua_State *l) int LuaImage::unload(lua_State *l) { - Image *i = (Image *)luaL_checkinteger(l, 1); + Image *i = (Image *)lua_touserdata(l, 1); i->unload(); return 0; @@ -96,7 +98,7 @@ int LuaImage::unload(lua_State *l) int LuaImage::getOriginalWidth(lua_State *l) { - Image *i = (Image *)luaL_checkinteger(l, 1); + Image *i = (Image *)lua_touserdata(l, 1); int w = 0; int h = 0; @@ -109,7 +111,7 @@ int LuaImage::getOriginalWidth(lua_State *l) int LuaImage::getOriginalHeight(lua_State *l) { - Image *i = (Image *)luaL_checkinteger(l, 1); + Image *i = (Image *)lua_touserdata(l, 1); int w = 0; int h = 0; @@ -122,7 +124,7 @@ int LuaImage::getOriginalHeight(lua_State *l) int LuaImage::getOriginalDimensions(lua_State *l) { - Image *i = (Image *)luaL_checkinteger(l, 1); + Image *i = (Image *)lua_touserdata(l, 1); int w = 0; int h = 0; @@ -135,7 +137,7 @@ int LuaImage::getOriginalDimensions(lua_State *l) int LuaImage::getX(lua_State *l) { - Image *i = (Image *)luaL_checkinteger(l, 1); + Image *i = (Image *)lua_touserdata(l, 1); lua_pushnumber(l, i->info.x); @@ -145,7 +147,7 @@ int LuaImage::getX(lua_State *l) int LuaImage::getY(lua_State *l) { - Image *i = (Image *)luaL_checkinteger(l, 1); + Image *i = (Image *)lua_touserdata(l, 1); lua_pushnumber(l, i->info.y); @@ -155,7 +157,7 @@ int LuaImage::getY(lua_State *l) int LuaImage::getPosition(lua_State *l) { - Image *i = (Image *)luaL_checkinteger(l, 1); + Image *i = (Image *)lua_touserdata(l, 1); lua_pushnumber(l, i->info.x); lua_pushnumber(l, i->info.y); @@ -165,7 +167,7 @@ int LuaImage::getPosition(lua_State *l) int LuaImage::getWidth(lua_State *l) { - Image *i = (Image *)luaL_checkinteger(l, 1); + Image *i = (Image *)lua_touserdata(l, 1); lua_pushnumber(l, i->info.width); @@ -175,7 +177,7 @@ int LuaImage::getWidth(lua_State *l) int LuaImage::getHeight(lua_State *l) { - Image *i = (Image *)luaL_checkinteger(l, 1); + Image *i = (Image *)lua_touserdata(l, 1); lua_pushnumber(l, i->info.height); @@ -185,7 +187,7 @@ int LuaImage::getHeight(lua_State *l) int LuaImage::getDimensions(lua_State *l) { - Image *i = (Image *)luaL_checkinteger(l, 1); + Image *i = (Image *)lua_touserdata(l, 1); lua_pushnumber(l, i->info.width); lua_pushnumber(l, i->info.height); @@ -195,7 +197,7 @@ int LuaImage::getDimensions(lua_State *l) int LuaImage::getRotate(lua_State *l) { - Image *i = (Image *)luaL_checkinteger(l, 1); + Image *i = (Image *)lua_touserdata(l, 1); lua_pushnumber(l, i->info.rotate); @@ -205,7 +207,7 @@ int LuaImage::getRotate(lua_State *l) int LuaImage::getAlpha(lua_State *l) { - Image *i = (Image *)luaL_checkinteger(l, 1); + Image *i = (Image *)lua_touserdata(l, 1); lua_pushnumber(l, i->info.alpha); @@ -214,7 +216,7 @@ int LuaImage::getAlpha(lua_State *l) int LuaImage::getLayer(lua_State *l) { - Image *i = (Image *)luaL_checkinteger(l, 1); + Image *i = (Image *)lua_touserdata(l, 1); lua_pushnumber(l, !i->info.layer); @@ -223,7 +225,7 @@ int LuaImage::getLayer(lua_State *l) int LuaImage::setX(lua_State *l) { - Image *i = (Image *)luaL_checkinteger(l, 1); + Image *i = (Image *)lua_touserdata(l, 1); int val = (int)luaL_checknumber(l, 2); i->info.x = val; @@ -234,7 +236,7 @@ int LuaImage::setX(lua_State *l) int LuaImage::setY(lua_State *l) { - Image *i = (Image *)luaL_checkinteger(l, 1); + Image *i = (Image *)lua_touserdata(l, 1); int val = (int)luaL_checknumber(l, 2); i->info.y = val; @@ -245,7 +247,7 @@ int LuaImage::setY(lua_State *l) int LuaImage::setPosition(lua_State *l) { - Image *i = (Image *)luaL_checkinteger(l, 1); + Image *i = (Image *)lua_touserdata(l, 1); int x = (int)luaL_checknumber(l, 2); int y = (int)luaL_checknumber(l, 3); @@ -258,7 +260,7 @@ int LuaImage::setPosition(lua_State *l) int LuaImage::setWidth(lua_State *l) { - Image *i = (Image *)luaL_checkinteger(l, 1); + Image *i = (Image *)lua_touserdata(l, 1); int val = (int)luaL_checknumber(l, 2); i->info.width = val; @@ -269,7 +271,7 @@ int LuaImage::setWidth(lua_State *l) int LuaImage::setHeight(lua_State *l) { - Image *i = (Image *)luaL_checkinteger(l, 1); + Image *i = (Image *)lua_touserdata(l, 1); int val = (int)luaL_checknumber(l, 2); i->info.height = val; @@ -280,7 +282,7 @@ int LuaImage::setHeight(lua_State *l) int LuaImage::setDimensions(lua_State *l) { - Image *i = (Image *)luaL_checkinteger(l, 1); + Image *i = (Image *)lua_touserdata(l, 1); int w = (int)luaL_checknumber(l, 2); int h = (int)luaL_checknumber(l, 3); @@ -293,7 +295,7 @@ int LuaImage::setDimensions(lua_State *l) int LuaImage::setRotate(lua_State *l) { - Image *i = (Image *)luaL_checkinteger(l, 1); + Image *i = (Image *)lua_touserdata(l, 1); float val = (float)luaL_checknumber(l, 2); i->info.rotate = val; @@ -304,7 +306,7 @@ int LuaImage::setRotate(lua_State *l) int LuaImage::setAlpha(lua_State *l) { - Image *i = (Image *)luaL_checkinteger(l, 1); + Image *i = (Image *)lua_touserdata(l, 1); float val = (float)luaL_checknumber(l, 2); i->info.alpha = val; @@ -314,7 +316,7 @@ int LuaImage::setAlpha(lua_State *l) int LuaImage::setLayer(lua_State *l) { - Image *i = (Image *)luaL_checkinteger(l, 1); + Image *i = (Image *)lua_touserdata(l, 1); int val = (int)luaL_checknumber(l, 2); i->info.layer = val; diff --git a/RetroFE/Source/RetroFE.cpp b/RetroFE/Source/RetroFE.cpp index ec5c019..a018196 100644 --- a/RetroFE/Source/RetroFE.cpp +++ b/RetroFE/Source/RetroFE.cpp @@ -147,8 +147,16 @@ void RetroFE::initializeLua() 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); + + int status = luaL_loadfile(lua_.state, path.c_str()); + if (status) { + std::string errorMsg = std::string(lua_tostring(lua_.state, -1)); + Logger::write(Logger::ZONE_ERROR, "LUA", "Error loading lua script: " + errorMsg); + } + else { + lua_pcall(lua_.state, 0, LUA_MULTRET, 0); + } + }