From 2594084de6e163f15a1516d64cf413de5b0d899f Mon Sep 17 00:00:00 2001 From: Thorbjørn Lindeijer Date: Tue, 8 Jan 2013 18:03:02 +0100 Subject: Added support for Lua 5.2 Should still work against Lua 5.1 as well. --- src/scripting/lua.cpp | 9 +++++++++ src/scripting/luascript.cpp | 4 ++++ src/scripting/luautil.h | 11 ++++++++++- 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/scripting/lua.cpp b/src/scripting/lua.cpp index 6285f382..c0aedfdd 100644 --- a/src/scripting/lua.cpp +++ b/src/scripting/lua.cpp @@ -2575,7 +2575,11 @@ LuaScript::LuaScript(): // Register package loader that goes through the resource manager // table.insert(package.loaders, 2, require_loader) lua_getglobal(mRootState, "package"); +#if LUA_VERSION_NUM < 502 lua_getfield(mRootState, -1, "loaders"); +#else + lua_getfield(mRootState, -1, "searchers"); +#endif lua_pushcfunction(mRootState, require_loader); lua_rawseti(mRootState, -2, 2); lua_pop(mRootState, 2); @@ -2699,8 +2703,13 @@ LuaScript::LuaScript(): { "get_special_info", &get_special_info }, { NULL, NULL } }; +#if LUA_VERSION_NUM < 502 lua_pushvalue(mRootState, LUA_GLOBALSINDEX); luaL_register(mRootState, NULL, callbacks); +#else + lua_pushglobaltable(mRootState); + luaL_setfuncs(mRootState, callbacks, 0); +#endif lua_pop(mRootState, 1); // pop the globals table static luaL_Reg const members_AttackInfo[] = { diff --git a/src/scripting/luascript.cpp b/src/scripting/luascript.cpp index 97b03e1d..a3dcb1d4 100644 --- a/src/scripting/luascript.cpp +++ b/src/scripting/luascript.cpp @@ -151,7 +151,11 @@ bool LuaScript::resume() setMap(mCurrentThread->mMap); const int tmpNbArgs = nbArgs; nbArgs = -1; +#if LUA_VERSION_NUM < 502 int result = lua_resume(mCurrentState, tmpNbArgs); +#else + int result = lua_resume(mCurrentState, NULL, tmpNbArgs); +#endif setMap(0); if (result == 0) // Thread is done diff --git a/src/scripting/luautil.h b/src/scripting/luautil.h index 1ff2ab8d..0d2a981d 100644 --- a/src/scripting/luautil.h +++ b/src/scripting/luautil.h @@ -103,7 +103,12 @@ public: luaL_newmetatable(s, mTypeName); // metatable lua_pushstring(s, "__index"); // metatable, "__index" - luaL_register(s, typeName, members); // metatable, "__index", {} + lua_createtable(s, 0, 0); // metatable, "__index", {} +#if LUA_VERSION_NUM < 502 + luaL_register(s, NULL, members); +#else + luaL_setfuncs(s, members, 0); +#endif lua_rawset(s, -3); // metatable lua_pop(s, 1); // -empty- } @@ -125,8 +130,12 @@ public: void *userData = lua_newuserdata(s, sizeof(T*)); * static_cast(userData) = object; +#if LUA_VERSION_NUM < 502 luaL_newmetatable(s, mTypeName); lua_setmetatable(s, -2); +#else + luaL_setmetatable(s, mTypeName); +#endif UserDataCache::insert(s, object); } -- cgit v1.2.3-70-g09d2