mirror of
https://github.com/luanti-org/luanti.git
synced 2025-08-11 17:51:04 +00:00
[CSM] Don't load the IO library. (#6087)
* [CSM] Don't load the IO library. * Rename the function to match the Lua API function name and add a missing `const` * Add a comment to explain some strange code and fix the other issues pointed out by shadowninja.
This commit is contained in:
parent
e7396a0c50
commit
30821ad8de
6 changed files with 54 additions and 16 deletions
|
@ -71,7 +71,8 @@ public:
|
|||
ScriptApiBase
|
||||
*/
|
||||
|
||||
ScriptApiBase::ScriptApiBase()
|
||||
ScriptApiBase::ScriptApiBase(ScriptingType type):
|
||||
m_type(type)
|
||||
{
|
||||
#ifdef SCRIPTAPI_LOCK_DEBUG
|
||||
m_lock_recursion_count = 0;
|
||||
|
@ -82,7 +83,10 @@ ScriptApiBase::ScriptApiBase()
|
|||
|
||||
lua_atpanic(m_luastack, &luaPanic);
|
||||
|
||||
luaL_openlibs(m_luastack);
|
||||
if (m_type == ScriptingType::Client)
|
||||
clientOpenLibs(m_luastack);
|
||||
else
|
||||
luaL_openlibs(m_luastack);
|
||||
|
||||
// Make the ScriptApiBase* accessible to ModApiBase
|
||||
lua_pushlightuserdata(m_luastack, this);
|
||||
|
@ -106,7 +110,10 @@ ScriptApiBase::ScriptApiBase()
|
|||
lua_newtable(m_luastack);
|
||||
lua_setglobal(m_luastack, "core");
|
||||
|
||||
lua_pushstring(m_luastack, DIR_DELIM);
|
||||
if (m_type == ScriptingType::Client)
|
||||
lua_pushstring(m_luastack, "/");
|
||||
else
|
||||
lua_pushstring(m_luastack, DIR_DELIM);
|
||||
lua_setglobal(m_luastack, "DIR_DELIM");
|
||||
|
||||
lua_pushstring(m_luastack, porting::getPlatformName());
|
||||
|
@ -128,6 +135,28 @@ int ScriptApiBase::luaPanic(lua_State *L)
|
|||
return 0;
|
||||
}
|
||||
|
||||
void ScriptApiBase::clientOpenLibs(lua_State *L)
|
||||
{
|
||||
static const std::vector<std::pair<std::string, lua_CFunction>> m_libs = {
|
||||
{ "", luaopen_base },
|
||||
{ LUA_LOADLIBNAME, luaopen_package },
|
||||
{ LUA_TABLIBNAME, luaopen_table },
|
||||
{ LUA_OSLIBNAME, luaopen_os },
|
||||
{ LUA_STRLIBNAME, luaopen_string },
|
||||
{ LUA_MATHLIBNAME, luaopen_math },
|
||||
{ LUA_DBLIBNAME, luaopen_debug },
|
||||
#if USE_LUAJIT
|
||||
{ LUA_JITLIBNAME, luaopen_jit },
|
||||
#endif
|
||||
};
|
||||
|
||||
for (const std::pair<std::string, lua_CFunction> &lib : m_libs) {
|
||||
lua_pushcfunction(L, lib.second);
|
||||
lua_pushstring(L, lib.first.c_str());
|
||||
lua_call(L, 1, 0);
|
||||
}
|
||||
}
|
||||
|
||||
void ScriptApiBase::loadMod(const std::string &script_path,
|
||||
const std::string &mod_name)
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue