Skip to content

Commit

Permalink
A few initialization cleanups
Browse files Browse the repository at this point in the history
  • Loading branch information
sfan5 authored and nerzhul committed Apr 11, 2020
1 parent aa3cf40 commit f105bc8
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 6 deletions.
8 changes: 6 additions & 2 deletions src/client/client.cpp
Expand Up @@ -178,7 +178,7 @@ void Client::loadMods()
infostream << mod.name << " ";
infostream << std::endl;

// Load and run "mod" scripts
// Load "mod" scripts
for (const ModSpec &mod : m_mods) {
if (!string_allowed(mod.name, MODNAME_ALLOWED_CHARS)) {
throw ModError("Error loading mod \"" + mod.name +
Expand All @@ -188,7 +188,7 @@ void Client::loadMods()
scanModIntoMemory(mod.name, mod.path);
}

// Load and run "mod" scripts
// Run them
for (const ModSpec &mod : m_mods)
m_script->loadModFromMemory(mod.name);

Expand All @@ -197,10 +197,14 @@ void Client::loadMods()

// Run a callback when mods are loaded
m_script->on_mods_loaded();

// Create objects if they're ready
if (m_state == LC_Ready)
m_script->on_client_ready(m_env.getLocalPlayer());
if (m_camera)
m_script->on_camera_ready(m_camera);
if (m_minimap)
m_script->on_minimap_ready(m_minimap);
}

bool Client::checkBuiltinIntegrity()
Expand Down
5 changes: 4 additions & 1 deletion src/client/game.cpp
Expand Up @@ -1407,8 +1407,11 @@ bool Game::createClient(const std::string &playername,
}

mapper = client->getMinimap();
if (mapper)
if (mapper) {
mapper->setMinimapMode(MINIMAP_MODE_OFF);
if (client->modsLoaded())
client->getScript()->on_minimap_ready(mapper);
}

return true;
}
Expand Down
8 changes: 5 additions & 3 deletions src/script/scripting_client.cpp
Expand Up @@ -55,9 +55,6 @@ ClientScripting::ClientScripting(Client *client):
InitializeModApi(L, top);
lua_pop(L, 1);

if (client->getMinimap())
LuaMinimap::create(L, client->getMinimap());

// Push builtin initialization type
lua_pushstring(L, "client");
lua_setglobal(L, "INIT");
Expand Down Expand Up @@ -94,3 +91,8 @@ void ClientScripting::on_camera_ready(Camera *camera)
{
LuaCamera::create(getStack(), camera);
}

void ClientScripting::on_minimap_ready(Minimap *minimap)
{
LuaMinimap::create(getStack(), minimap);
}
3 changes: 3 additions & 0 deletions src/script/scripting_client.h
Expand Up @@ -28,6 +28,8 @@ with this program; if not, write to the Free Software Foundation, Inc.,
class Client;
class LocalPlayer;
class Camera;
class Minimap;

class ClientScripting:
virtual public ScriptApiBase,
public ScriptApiSecurity,
Expand All @@ -38,6 +40,7 @@ class ClientScripting:
ClientScripting(Client *client);
void on_client_ready(LocalPlayer *localplayer);
void on_camera_ready(Camera *camera);
void on_minimap_ready(Minimap *minimap);

private:
virtual void InitializeModApi(lua_State *L, int top);
Expand Down

0 comments on commit f105bc8

Please sign in to comment.