From ccc3af128cb4b6213b8111115c570fe988d3523b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Blot?= Date: Wed, 6 Jun 2018 12:53:59 +0200 Subject: CSM/SSM: Add on_mods_loaded callback (#7411) * CSM/SSM: Add on_mods_loaded callback --- src/script/cpp_api/s_client.cpp | 11 +++++++++++ src/script/cpp_api/s_client.h | 3 +++ src/script/cpp_api/s_server.cpp | 11 +++++++++++ src/script/cpp_api/s_server.h | 3 +++ 4 files changed, 28 insertions(+) (limited to 'src/script') diff --git a/src/script/cpp_api/s_client.cpp b/src/script/cpp_api/s_client.cpp index a8d8c2de4..7be4fc6a9 100644 --- a/src/script/cpp_api/s_client.cpp +++ b/src/script/cpp_api/s_client.cpp @@ -25,6 +25,17 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "common/c_content.h" #include "s_item.h" +void ScriptApiClient::on_mods_loaded() +{ + SCRIPTAPI_PRECHECKHEADER + + // Get registered shutdown hooks + lua_getglobal(L, "core"); + lua_getfield(L, -1, "registered_on_mods_loaded"); + // Call callbacks + runCallbacks(0, RUN_CALLBACKS_MODE_FIRST); +} + void ScriptApiClient::on_shutdown() { SCRIPTAPI_PRECHECKHEADER diff --git a/src/script/cpp_api/s_client.h b/src/script/cpp_api/s_client.h index 402b44e33..93fe96791 100644 --- a/src/script/cpp_api/s_client.h +++ b/src/script/cpp_api/s_client.h @@ -37,6 +37,9 @@ class ClientEnvironment; class ScriptApiClient : virtual public ScriptApiBase { public: + // Calls when mods are loaded + void on_mods_loaded(); + // Calls on_shutdown handlers void on_shutdown(); diff --git a/src/script/cpp_api/s_server.cpp b/src/script/cpp_api/s_server.cpp index 38bd41f87..b0459fbfa 100644 --- a/src/script/cpp_api/s_server.cpp +++ b/src/script/cpp_api/s_server.cpp @@ -147,6 +147,17 @@ bool ScriptApiServer::on_chat_message(const std::string &name, return ate; } +void ScriptApiServer::on_mods_loaded() +{ + SCRIPTAPI_PRECHECKHEADER + + // Get registered shutdown hooks + lua_getglobal(L, "core"); + lua_getfield(L, -1, "registered_on_mods_loaded"); + // Call callbacks + runCallbacks(0, RUN_CALLBACKS_MODE_FIRST); +} + void ScriptApiServer::on_shutdown() { SCRIPTAPI_PRECHECKHEADER diff --git a/src/script/cpp_api/s_server.h b/src/script/cpp_api/s_server.h index 74de19bee..769939d3f 100644 --- a/src/script/cpp_api/s_server.h +++ b/src/script/cpp_api/s_server.h @@ -30,6 +30,9 @@ public: // Returns true if script handled message bool on_chat_message(const std::string &name, const std::string &message); + // Calls when mods are loaded + void on_mods_loaded(); + // Calls on_shutdown handlers void on_shutdown(); -- cgit v1.2.3