diff --git a/src/server/game/Scripting/ScriptDefines/GameEventScript.cpp b/src/server/game/Scripting/ScriptDefines/GameEventScript.cpp index 5714bf433..1c47e071e 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* script) - { - script->OnStart(EventID); - }); + CALL_ENABLED_HOOKS(GameEventScript, GAMEEVENTHOOK_ON_START, script->OnStart(EventID)); } void ScriptMgr::OnGameEventStop(uint16 EventID) { - ExecuteScript([&](GameEventScript* script) - { - script->OnStop(EventID); - }); + CALL_ENABLED_HOOKS(GameEventScript, GAMEEVENTHOOK_ON_STOP, script->OnStop(EventID)); } void ScriptMgr::OnGameEventCheck(uint16 EventID) { - ExecuteScript([&](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 enabledHooks) + : ScriptObject(name, GAMEEVENTHOOK_END) { - ScriptRegistry::AddScript(this); + // If empty - enable all available hooks. + if (enabledHooks.empty()) + for (uint16 i = 0; i < GAMEEVENTHOOK_END; ++i) + enabledHooks.emplace_back(i); + + ScriptRegistry::AddScript(this, std::move(enabledHooks)); } template class AC_GAME_API ScriptRegistry; diff --git a/src/server/game/Scripting/ScriptDefines/GameEventScript.h b/src/server/game/Scripting/ScriptDefines/GameEventScript.h index 9fe40a3f3..7902d56af 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 + +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 enabledHooks = std::vector()); public: // Runs on start event