Clean up some getServer() unsafety

This commit is contained in:
sfan5 2024-04-20 19:11:50 +02:00
parent e39e47b21f
commit 58eccc7a2a
3 changed files with 15 additions and 8 deletions

@ -541,8 +541,8 @@ Server* ScriptApiBase::getServer()
{
// Since the gamedef is the server it's still possible to retrieve it in
// e.g. the async environment, but this isn't meant to happen.
// TODO: still needs work
//assert(getType() == ScriptingType::Server);
if (getType() != ScriptingType::Server)
return nullptr;
return dynamic_cast<Server *>(m_gamedef);
}

@ -56,10 +56,15 @@ EmergeScripting::EmergeScripting(EmergeThread *parent):
InitializeModApi(L, top);
auto *data = ModApiBase::getServer(L)->m_lua_globals_data.get();
// pull the globals data from the server
{
auto *server = dynamic_cast<Server*>(ModApiBase::getGameDef(L));
assert(server);
auto *data = server->m_lua_globals_data.get();
assert(data);
script_unpack(L, data);
lua_setfield(L, top, "transferred_globals");
}
lua_pop(L, 1);

@ -192,8 +192,10 @@ void ServerScripting::InitializeAsync(lua_State *L, int top)
LuaVoxelManip::Register(L);
LuaSettings::Register(L);
// globals data
auto *data = ModApiBase::getServer(L)->m_lua_globals_data.get();
// pull the globals data from the server
auto *server = dynamic_cast<Server*>(ModApiBase::getGameDef(L));
assert(server);
auto *data = server->m_lua_globals_data.get();
assert(data);
script_unpack(L, data);
lua_setfield(L, top, "transferred_globals");