Core/Game: Add a dynamic script reloader which reloads scripts modules on changes.

* is responsible for registering plain modules.
* requires compilation with the `WITH_DYNAMIC_LINKING` flag.
* requires further support of the ScriptMgr.
This commit is contained in:
Aokromes
2016-08-10 03:29:20 +02:00
parent 3d25c14e74
commit e8e164e28f
8 changed files with 1669 additions and 6 deletions

View File

@@ -263,12 +263,19 @@ void ScriptMgr::Initialize()
FillSpellSummary();
// Load core script systems
// SmartAI
BeginScriptContext("core scripts");
AddSC_SmartScripts();
FinishScriptContext();
// Load all static linked scripts through the script loader function.
BeginScriptContext("static scripts");
ASSERT(_script_loader_callback,
"Script loader callback wasn't registered!");
_script_loader_callback();
FinishScriptContext();
#ifdef SCRIPTS
for (std::string const& scriptName : UnusedScriptNames)
@@ -280,6 +287,21 @@ void ScriptMgr::Initialize()
TC_LOG_INFO("server.loading", ">> Loaded %u C++ scripts in %u ms", GetScriptCount(), GetMSTimeDiffToNow(oldMSTime));
}
void ScriptMgr::BeginScriptContext(std::string const& context)
{
_currentContext = context;
}
void ScriptMgr::FinishScriptContext()
{
_currentContext.clear();
}
void ScriptMgr::ReleaseScriptContext(std::string const& /*context*/)
{
// ToDo
}
void ScriptMgr::Unload()
{
#define SCR_CLEAR(T) \