diff options
| author | 天鹿 <18535853+PkllonG@users.noreply.github.com> | 2024-04-12 21:55:35 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-04-12 10:55:35 -0300 |
| commit | 9464068625e634024af00fe8b0ce6efb435c84a3 (patch) | |
| tree | 3caa49dfb339c7ffa063d501148ac9d036720b36 /src/server/game/Scripting/ScriptDefines | |
| parent | e4cae908faddcd8caf6ed5cd9f30e86f0936518d (diff) | |
feat(Core/Scripts): Optimize MailScript (#18716)
* Add files via upload
* Add files via upload
* Add files via upload
* Add files via upload
* Add files via upload
* Update MailScript.h
Diffstat (limited to 'src/server/game/Scripting/ScriptDefines')
| -rw-r--r-- | src/server/game/Scripting/ScriptDefines/MailScript.cpp | 16 | ||||
| -rw-r--r-- | src/server/game/Scripting/ScriptDefines/MailScript.h | 9 |
2 files changed, 17 insertions, 8 deletions
diff --git a/src/server/game/Scripting/ScriptDefines/MailScript.cpp b/src/server/game/Scripting/ScriptDefines/MailScript.cpp index ac1ca35dc6..0f867fb08b 100644 --- a/src/server/game/Scripting/ScriptDefines/MailScript.cpp +++ b/src/server/game/Scripting/ScriptDefines/MailScript.cpp @@ -21,16 +21,18 @@ void ScriptMgr::OnBeforeMailDraftSendMailTo(MailDraft* mailDraft, MailReceiver const& receiver, MailSender const& sender, MailCheckMask& checked, uint32& deliver_delay, uint32& custom_expiration, bool& deleteMailItemsFromDB, bool& sendMail) { - ExecuteScript<MailScript>([&](MailScript* script) - { - script->OnBeforeMailDraftSendMailTo(mailDraft, receiver, sender, checked, deliver_delay, custom_expiration, deleteMailItemsFromDB, sendMail);\ - }); + CALL_ENABLED_HOOKS(MailScript, MAILHOOK_ON_BEFORE_MAIL_DRAFT_SEND_MAIL_TO, script->OnBeforeMailDraftSendMailTo(mailDraft, receiver, sender, checked, deliver_delay, custom_expiration, deleteMailItemsFromDB, sendMail)); } -MailScript::MailScript(const char* name) - : ScriptObject(name) +MailScript::MailScript(const char* name, std::vector<uint16> enabledHooks) + : ScriptObject(name, MAILHOOK_END) { - ScriptRegistry<MailScript>::AddScript(this); + // If empty - enable all available hooks. + if (enabledHooks.empty()) + for (uint16 i = 0; i < MAILHOOK_END; ++i) + enabledHooks.emplace_back(i); + + ScriptRegistry<MailScript>::AddScript(this, std::move(enabledHooks)); } template class AC_GAME_API ScriptRegistry<MailScript>; diff --git a/src/server/game/Scripting/ScriptDefines/MailScript.h b/src/server/game/Scripting/ScriptDefines/MailScript.h index bd3647e42b..4591168a5d 100644 --- a/src/server/game/Scripting/ScriptDefines/MailScript.h +++ b/src/server/game/Scripting/ScriptDefines/MailScript.h @@ -19,11 +19,18 @@ #define SCRIPT_OBJECT_MAIL_SCRIPT_H_ #include "ScriptObject.h" +#include <vector> + +enum MailHook +{ + MAILHOOK_ON_BEFORE_MAIL_DRAFT_SEND_MAIL_TO, + MAILHOOK_END +}; class MailScript : public ScriptObject { protected: - MailScript(const char* name); + MailScript(const char* name, std::vector<uint16> enabledHooks = std::vector<uint16>()); public: // Called before mail is sent |
