diff options
| author | 天鹿 <18535853+PkllonG@users.noreply.github.com> | 2024-04-12 21:56:46 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-04-12 10:56:46 -0300 |
| commit | 170817e66dc95cc9c0bc3dcc9bc9fb9191b4ff27 (patch) | |
| tree | 3a782aa410633f31c3a981f24db1445d3abdf3ce /src/server/game/Scripting/ScriptDefines | |
| parent | a2c867fcf2aecad34f23ae617e87df732c2a7a0d (diff) | |
feat(Core/Scripts): Optimize GameEventScript (#18711)
* Add files via upload
* Update GameEventScript.h
Diffstat (limited to 'src/server/game/Scripting/ScriptDefines')
| -rw-r--r-- | src/server/game/Scripting/ScriptDefines/GameEventScript.cpp | 26 | ||||
| -rw-r--r-- | src/server/game/Scripting/ScriptDefines/GameEventScript.h | 11 |
2 files changed, 21 insertions, 16 deletions
diff --git a/src/server/game/Scripting/ScriptDefines/GameEventScript.cpp b/src/server/game/Scripting/ScriptDefines/GameEventScript.cpp index 5714bf4334..1c47e071e1 100644 --- a/src/server/game/Scripting/ScriptDefines/GameEventScript.cpp +++ b/src/server/game/Scripting/ScriptDefines/GameEventScript.cpp @@ -21,32 +21,28 @@ void ScriptMgr::OnGameEventStart(uint16 EventID) { - ExecuteScript<GameEventScript>([&](GameEventScript* script) - { - script->OnStart(EventID); - }); + CALL_ENABLED_HOOKS(GameEventScript, GAMEEVENTHOOK_ON_START, script->OnStart(EventID)); } void ScriptMgr::OnGameEventStop(uint16 EventID) { - ExecuteScript<GameEventScript>([&](GameEventScript* script) - { - script->OnStop(EventID); - }); + CALL_ENABLED_HOOKS(GameEventScript, GAMEEVENTHOOK_ON_STOP, script->OnStop(EventID)); } void ScriptMgr::OnGameEventCheck(uint16 EventID) { - ExecuteScript<GameEventScript>([&](GameEventScript* script) - { - script->OnEventCheck(EventID); - }); + CALL_ENABLED_HOOKS(GameEventScript, GAMEEVENTHOOK_ON_EVENT_CHECK, script->OnEventCheck(EventID)); } -GameEventScript::GameEventScript(const char* name) - : ScriptObject(name) +GameEventScript::GameEventScript(const char* name, std::vector<uint16> enabledHooks) + : ScriptObject(name, GAMEEVENTHOOK_END) { - ScriptRegistry<GameEventScript>::AddScript(this); + // If empty - enable all available hooks. + if (enabledHooks.empty()) + for (uint16 i = 0; i < GAMEEVENTHOOK_END; ++i) + enabledHooks.emplace_back(i); + + ScriptRegistry<GameEventScript>::AddScript(this, std::move(enabledHooks)); } template class AC_GAME_API ScriptRegistry<GameEventScript>; diff --git a/src/server/game/Scripting/ScriptDefines/GameEventScript.h b/src/server/game/Scripting/ScriptDefines/GameEventScript.h index 9fe40a3f34..7902d56af3 100644 --- a/src/server/game/Scripting/ScriptDefines/GameEventScript.h +++ b/src/server/game/Scripting/ScriptDefines/GameEventScript.h @@ -19,11 +19,20 @@ #define SCRIPT_OBJECT_GAME_EVENT_SCRIPT_H_ #include "ScriptObject.h" +#include <vector> + +enum GameEventHook +{ + GAMEEVENTHOOK_ON_START, + GAMEEVENTHOOK_ON_STOP, + GAMEEVENTHOOK_ON_EVENT_CHECK, + GAMEEVENTHOOK_END +}; class GameEventScript : public ScriptObject { protected: - GameEventScript(const char* name); + GameEventScript(const char* name, std::vector<uint16> enabledHooks = std::vector<uint16>()); public: // Runs on start event |
