summaryrefslogtreecommitdiff
path: root/src/server/game/Scripting/ScriptDefines
diff options
context:
space:
mode:
author天鹿 <18535853+PkllonG@users.noreply.github.com>2024-04-12 21:55:35 +0800
committerGitHub <noreply@github.com>2024-04-12 10:55:35 -0300
commit9464068625e634024af00fe8b0ce6efb435c84a3 (patch)
tree3caa49dfb339c7ffa063d501148ac9d036720b36 /src/server/game/Scripting/ScriptDefines
parente4cae908faddcd8caf6ed5cd9f30e86f0936518d (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.cpp16
-rw-r--r--src/server/game/Scripting/ScriptDefines/MailScript.h9
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