- fixed lua 5.2 code for save / load games
- cmake now prefers lua 5.2 over 5.1
This commit is contained in:
parent
85b1365e7e
commit
87a4eb49e4
|
@ -21,6 +21,7 @@ ENDIF(LUA_INCLUDE_DIR AND LUA_LIBRARIES)
|
||||||
FIND_PATH(LUA_INCLUDE_DIR NAMES lua.hpp
|
FIND_PATH(LUA_INCLUDE_DIR NAMES lua.hpp
|
||||||
PATHS /usr/include
|
PATHS /usr/include
|
||||||
/usr/include/lua
|
/usr/include/lua
|
||||||
|
/usr/include/lua5.2
|
||||||
/usr/include/lua5.1
|
/usr/include/lua5.1
|
||||||
IF(FreeBSD)
|
IF(FreeBSD)
|
||||||
SET(PATHS "/usr/local/include/lua51")
|
SET(PATHS "/usr/local/include/lua51")
|
||||||
|
@ -29,7 +30,7 @@ FIND_PATH(LUA_INCLUDE_DIR NAMES lua.hpp
|
||||||
)
|
)
|
||||||
|
|
||||||
IF (LUA_STATIC AND NOT LUA_LIBRARIES)
|
IF (LUA_STATIC AND NOT LUA_LIBRARIES)
|
||||||
FIND_LIBRARY(LUA_LIBRARIES NAMES liblua5.1.a liblua.a lua5.1 lua
|
FIND_LIBRARY(LUA_LIBRARIES NAMES liblua5.2.a liblua5.1.a liblua.a lua5.1 lua
|
||||||
PATHS
|
PATHS
|
||||||
IF(FreeBSD)
|
IF(FreeBSD)
|
||||||
SET(PATHS "/usr/local/lib/lua51")
|
SET(PATHS "/usr/local/lib/lua51")
|
||||||
|
@ -37,7 +38,7 @@ IF (LUA_STATIC AND NOT LUA_LIBRARIES)
|
||||||
$ENV{LUA_HOME})
|
$ENV{LUA_HOME})
|
||||||
|
|
||||||
ELSE()
|
ELSE()
|
||||||
FIND_LIBRARY(LUA_LIBRARIES NAMES lua5.1 lua
|
FIND_LIBRARY(LUA_LIBRARIES NAMES lua5.2 lua5.1 lua
|
||||||
PATHS
|
PATHS
|
||||||
IF(FreeBSD)
|
IF(FreeBSD)
|
||||||
SET(PATHS "/usr/local/lib/lua51")
|
SET(PATHS "/usr/local/lib/lua51")
|
||||||
|
|
|
@ -121,16 +121,18 @@ void LuaScript::DumpGlobals()
|
||||||
{
|
{
|
||||||
LuaHandle *L = luaState;
|
LuaHandle *L = luaState;
|
||||||
// push the first key (nil = beginning of table)
|
// push the first key (nil = beginning of table)
|
||||||
|
#if LUA_VERSION_NUM <= 501
|
||||||
lua_pushnil(L);
|
lua_pushnil(L);
|
||||||
|
#endif
|
||||||
// lua_next will:
|
// lua_next will:
|
||||||
// 1 - pop the key
|
// 1 - pop the key
|
||||||
// 2 - push the next key
|
// 2 - push the next key
|
||||||
// 3 - push the value at that key
|
// 3 - push the value at that key
|
||||||
// ... so the key will be at index -2 and the value at index -1
|
// ... so the key will be at index -2 and the value at index -1
|
||||||
#if LUA_VERSION_NUM > 501
|
#if LUA_VERSION_NUM > 501
|
||||||
lua_rawgeti(L, LUA_REGISTRYINDEX, LUA_RIDX_GLOBALS);
|
lua_pushglobaltable(L);
|
||||||
for (lua_pushnil(L); lua_next(L, -2); lua_pop(L, 1)) {
|
lua_pushnil(L);
|
||||||
|
while (lua_next(L, -2) != 0) {
|
||||||
#else
|
#else
|
||||||
while (lua_next(L, LUA_GLOBALSINDEX) != 0) {
|
while (lua_next(L, LUA_GLOBALSINDEX) != 0) {
|
||||||
#endif
|
#endif
|
||||||
|
@ -197,10 +199,13 @@ void LuaScript::DumpGlobals()
|
||||||
// call luaL_dostring with that line.
|
// call luaL_dostring with that line.
|
||||||
//SaveLine(key_string + " = " + value_string); // Pop the value so the index remains on top of the stack for the next iteration
|
//SaveLine(key_string + " = " + value_string); // Pop the value so the index remains on top of the stack for the next iteration
|
||||||
printf("Found global LUA var: %s = %s\n",key_string.c_str(),value_string.c_str());
|
printf("Found global LUA var: %s = %s\n",key_string.c_str(),value_string.c_str());
|
||||||
#if LUA_VERSION_NUM <= 501
|
|
||||||
|
lua_pop(L, 1);
|
||||||
|
}
|
||||||
|
#if LUA_VERSION_NUM > 501
|
||||||
lua_pop(L, 1);
|
lua_pop(L, 1);
|
||||||
#endif
|
#endif
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void LuaScript::saveGame(XmlNode *rootNode) {
|
void LuaScript::saveGame(XmlNode *rootNode) {
|
||||||
|
@ -210,7 +215,9 @@ void LuaScript::saveGame(XmlNode *rootNode) {
|
||||||
//try{
|
//try{
|
||||||
LuaHandle *L = luaState;
|
LuaHandle *L = luaState;
|
||||||
// push the first key (nil = beginning of table)
|
// push the first key (nil = beginning of table)
|
||||||
|
#if LUA_VERSION_NUM <= 501
|
||||||
lua_pushnil(L);
|
lua_pushnil(L);
|
||||||
|
#endif
|
||||||
|
|
||||||
// lua_next will:
|
// lua_next will:
|
||||||
// 1 - pop the key
|
// 1 - pop the key
|
||||||
|
@ -219,8 +226,9 @@ void LuaScript::saveGame(XmlNode *rootNode) {
|
||||||
// ... so the key will be at index -2 and the value at index -1
|
// ... so the key will be at index -2 and the value at index -1
|
||||||
|
|
||||||
#if LUA_VERSION_NUM > 501
|
#if LUA_VERSION_NUM > 501
|
||||||
lua_rawgeti(L, LUA_REGISTRYINDEX, LUA_RIDX_GLOBALS);
|
lua_pushglobaltable(L);
|
||||||
for (lua_pushnil(L); lua_next(L, -2); lua_pop(L, 1)) {
|
lua_pushnil(L);
|
||||||
|
while (lua_next(L, -2) != 0) {
|
||||||
#else
|
#else
|
||||||
while (lua_next(L, LUA_GLOBALSINDEX) != 0) {
|
while (lua_next(L, LUA_GLOBALSINDEX) != 0) {
|
||||||
#endif
|
#endif
|
||||||
|
@ -387,10 +395,12 @@ void LuaScript::saveGame(XmlNode *rootNode) {
|
||||||
luaScriptNode->addAttribute("value_type",intToStr(value_type), mapTagReplacements);
|
luaScriptNode->addAttribute("value_type",intToStr(value_type), mapTagReplacements);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#if LUA_VERSION_NUM <= 501
|
lua_pop(L, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
#if LUA_VERSION_NUM > 501
|
||||||
lua_pop(L, 1);
|
lua_pop(L, 1);
|
||||||
#endif
|
#endif
|
||||||
}
|
|
||||||
|
|
||||||
//}
|
//}
|
||||||
//catch(const exception &ex) {
|
//catch(const exception &ex) {
|
||||||
|
|
Loading…
Reference in New Issue