diff options
| author | 天鹿 <18535853+PkllonG@users.noreply.github.com> | 2024-04-12 21:52:43 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-04-12 10:52:43 -0300 |
| commit | bf4f9774c15c224b6aa3632e54f7db2f59cff3c6 (patch) | |
| tree | 05e5c36f7d3f0abef3a39f980cd1ebd2016112fe /src/server/game/Scripting/ScriptDefines | |
| parent | 97fc546c4bf5d438b4886cae2d261d9ca3d3a996 (diff) | |
feat(Core/Scripts): Optimize DatabaseScript (#18709)
Add files via upload
Diffstat (limited to 'src/server/game/Scripting/ScriptDefines')
| -rw-r--r-- | src/server/game/Scripting/ScriptDefines/DatabaseScript.cpp | 20 | ||||
| -rw-r--r-- | src/server/game/Scripting/ScriptDefines/DatabaseScript.h | 9 |
2 files changed, 18 insertions, 11 deletions
diff --git a/src/server/game/Scripting/ScriptDefines/DatabaseScript.cpp b/src/server/game/Scripting/ScriptDefines/DatabaseScript.cpp index fcb21f1870..550564373e 100644 --- a/src/server/game/Scripting/ScriptDefines/DatabaseScript.cpp +++ b/src/server/game/Scripting/ScriptDefines/DatabaseScript.cpp @@ -21,23 +21,23 @@ void ScriptMgr::OnAfterDatabasesLoaded(uint32 updateFlags) { - ExecuteScript<DatabaseScript>([&](DatabaseScript* script) - { - script->OnAfterDatabasesLoaded(updateFlags); - }); + CALL_ENABLED_HOOKS(DatabaseScript, DATABASEHOOK_ON_AFTER_DATABASES_LOADED, script->OnAfterDatabasesLoaded(updateFlags)); } void ScriptMgr::OnAfterDatabaseLoadCreatureTemplates(std::vector<CreatureTemplate*> creatureTemplates) { - ExecuteScript<DatabaseScript>([&](DatabaseScript* script) - { - script->OnAfterDatabaseLoadCreatureTemplates(creatureTemplates); - }); + CALL_ENABLED_HOOKS(DatabaseScript, DATABASEHOOK_ON_AFTER_DATABASE_LOAD_CREATURETEMPLATES, script->OnAfterDatabaseLoadCreatureTemplates(creatureTemplates)); } -DatabaseScript::DatabaseScript(const char* name) : ScriptObject(name) +DatabaseScript::DatabaseScript(const char* name, std::vector<uint16> enabledHooks) + : ScriptObject(name, DATABASEHOOK_END) { - ScriptRegistry<DatabaseScript>::AddScript(this); + // If empty - enable all available hooks. + if (enabledHooks.empty()) + for (uint16 i = 0; i < DATABASEHOOK_END; ++i) + enabledHooks.emplace_back(i); + + ScriptRegistry<DatabaseScript>::AddScript(this, std::move(enabledHooks)); } template class AC_GAME_API ScriptRegistry<DatabaseScript>; diff --git a/src/server/game/Scripting/ScriptDefines/DatabaseScript.h b/src/server/game/Scripting/ScriptDefines/DatabaseScript.h index c975626d45..3340676fa8 100644 --- a/src/server/game/Scripting/ScriptDefines/DatabaseScript.h +++ b/src/server/game/Scripting/ScriptDefines/DatabaseScript.h @@ -21,11 +21,18 @@ #include "ScriptObject.h" #include <vector> +enum DatabaseHook +{ + DATABASEHOOK_ON_AFTER_DATABASES_LOADED, + DATABASEHOOK_ON_AFTER_DATABASE_LOAD_CREATURETEMPLATES, + DATABASEHOOK_END +}; + class DatabaseScript : public ScriptObject { protected: - DatabaseScript(const char* name); + DatabaseScript(const char* name, std::vector<uint16> enabledHooks = std::vector<uint16>()); public: |
