Exemple #1
0
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();
        }
    }
}
Exemple #2
0
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;
    }
}
Exemple #3
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;
    }
}
Exemple #4
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;
}