void LuaInterface::loadFiles(std::string directory, bool recursive, std::string contains) { for(const std::string& fileName : g_resources.listDirectoryFiles(directory)) { std::string fullPath = directory + "/" + fileName; if(recursive && g_resources.directoryExists(fullPath)) { loadFiles(fullPath, true, contains); continue; } if(!g_resources.isFileType(fileName, "lua")) continue; if(!contains.empty() && fileName.find(contains) == std::string::npos) continue; try { g_lua.loadScript(fullPath); g_lua.call(0, 0); } catch(stdext::exception& e) { g_lua.pushString(e.what()); g_lua.error(); } } }
int LuaInterface::luaScriptLoader(lua_State* L) { // loads the script as a function std::string fileName = g_lua.popString(); try { g_lua.loadScript(fileName); return 1; } catch(stdext::exception& e) { g_lua.pushString(std::string("\n\t") + e.what()); return 1; } }
int LuaInterface::luaScriptLoader(lua_State* L) { // loads the script as a function std::string fileName = g_lua.popString(); fileName += ".lua"; try { g_lua.loadScript(fileName); return 1; } catch(LuaException& e) { logError("failed to load script file '", fileName, "' :'", e.what()); return 0; } }
int LuaInterface::lua_loadfile(lua_State* L) { std::string fileName = g_lua.popString(); try { g_lua.loadScript(fileName); return 1; } catch(stdext::exception& e) { g_lua.pushNil(); g_lua.pushString(e.what()); g_lua.error(); return 2; } }
int LuaInterface::lua_dofile(lua_State* L) { std::string file = g_lua.popString(); try { g_lua.loadScript(file); g_lua.call(0, LUA_MULTRET); return g_lua.stackSize(); } catch(stdext::exception& e) { g_lua.pushString(e.what()); g_lua.error(); return 0; } }
int LuaInterface::luaScriptRunner(lua_State* L) { std::string fileName = g_lua.popString(); if(!boost::ends_with(fileName, ".lua")) fileName += ".lua"; try { g_lua.loadScript(fileName); g_lua.call(0, LUA_MULTRET); return g_lua.stackSize(); } catch(LuaException& e) { logError("failed to load script file '", fileName, "' :'", e.what()); return 0; } }
int LuaInterface::luaScriptsRunner(lua_State* L) { std::string directory = g_lua.popString(); for(const std::string& fileName : g_resources.listDirectoryFiles(directory)) { if(!boost::ends_with(fileName, ".lua")) continue; try { g_lua.loadScript(directory + "/" + fileName); g_lua.call(0, 0); } catch(LuaException& e) { logError("failed to load script file '", fileName, "' :'", e.what()); } } return 0; }