summaryrefslogtreecommitdiff
path: root/src/server/game/Scripting/ScriptDefines
diff options
context:
space:
mode:
author天鹿 <18535853+PkllonG@users.noreply.github.com>2024-04-12 21:52:43 +0800
committerGitHub <noreply@github.com>2024-04-12 10:52:43 -0300
commitbf4f9774c15c224b6aa3632e54f7db2f59cff3c6 (patch)
tree05e5c36f7d3f0abef3a39f980cd1ebd2016112fe /src/server/game/Scripting/ScriptDefines
parent97fc546c4bf5d438b4886cae2d261d9ca3d3a996 (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.cpp20
-rw-r--r--src/server/game/Scripting/ScriptDefines/DatabaseScript.h9
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: