diff options
| author | 天鹿 <18535853+PkllonG@users.noreply.github.com> | 2024-04-12 21:59:56 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-04-12 10:59:56 -0300 |
| commit | a4af83b277d47a1e5827e19095ee5089ac075606 (patch) | |
| tree | f22cc2585edd8956a15f0dacaee2e4227a0e1e64 /src/server/game/Scripting/ScriptDefines | |
| parent | d87af546755367df08df088ee7e5611fe8b0c86d (diff) | |
feat(Core/Scripts): Optimize AllCommandScript (#18703)
* Add files via upload
* Update AllCommandScript.h
Diffstat (limited to 'src/server/game/Scripting/ScriptDefines')
| -rw-r--r-- | src/server/game/Scripting/ScriptDefines/AllCommandScript.cpp | 23 | ||||
| -rw-r--r-- | src/server/game/Scripting/ScriptDefines/AllCommandScript.h | 10 |
2 files changed, 19 insertions, 14 deletions
diff --git a/src/server/game/Scripting/ScriptDefines/AllCommandScript.cpp b/src/server/game/Scripting/ScriptDefines/AllCommandScript.cpp index b30b9e601c..0ab2f297f7 100644 --- a/src/server/game/Scripting/ScriptDefines/AllCommandScript.cpp +++ b/src/server/game/Scripting/ScriptDefines/AllCommandScript.cpp @@ -21,24 +21,21 @@ void ScriptMgr::OnHandleDevCommand(Player* player, bool& enable) { - ExecuteScript<AllCommandScript>([&](AllCommandScript* script) - { - script->OnHandleDevCommand(player, enable); - }); + CALL_ENABLED_HOOKS(AllCommandScript, ALLCOMMANDHOOK_ON_HANDLE_DEV_COMMAND, script->OnHandleDevCommand(player, enable)); } bool ScriptMgr::CanExecuteCommand(ChatHandler& handler, std::string_view cmdStr) { - auto ret = IsValidBoolScript<AllCommandScript>([&](AllCommandScript* script) - { - return !script->CanExecuteCommand(handler, cmdStr); - }); - - return ReturnValidBool(ret); + CALL_ENABLED_BOOLEAN_HOOKS(AllCommandScript, ALLCOMMANDHOOK_CAN_EXECUTE_COMMAND, !script->CanExecuteCommand(handler, cmdStr)); } -AllCommandScript::AllCommandScript(const char* name) - : ScriptObject(name) +AllCommandScript::AllCommandScript(const char* name, std::vector<uint16> enabledHooks) + : ScriptObject(name, ALLCOMMANDHOOK_END) { - ScriptRegistry<AllCommandScript>::AddScript(this); + // If empty - enable all available hooks. + if (enabledHooks.empty()) + for (uint16 i = 0; i < ALLCOMMANDHOOK_END; ++i) + enabledHooks.emplace_back(i); + + ScriptRegistry<AllCommandScript>::AddScript(this, std::move(enabledHooks)); } diff --git a/src/server/game/Scripting/ScriptDefines/AllCommandScript.h b/src/server/game/Scripting/ScriptDefines/AllCommandScript.h index 68d5824902..509822e7a7 100644 --- a/src/server/game/Scripting/ScriptDefines/AllCommandScript.h +++ b/src/server/game/Scripting/ScriptDefines/AllCommandScript.h @@ -19,11 +19,19 @@ #define SCRIPT_OBJECT_ALL_COMMAND_SCRIPT_H_ #include "ScriptObject.h" +#include <vector> + +enum AllCommandHook +{ + ALLCOMMANDHOOK_ON_HANDLE_DEV_COMMAND, + ALLCOMMANDHOOK_CAN_EXECUTE_COMMAND, + ALLCOMMANDHOOK_END +}; class AllCommandScript : public ScriptObject { protected: - AllCommandScript(const char* name); + AllCommandScript(const char* name, std::vector<uint16> enabledHooks = std::vector<uint16>()); public: [[nodiscard]] bool IsDatabaseBound() const override { return false; } |
