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
This commit is contained in:
天鹿
2024-04-12 21:55:35 +08:00
committed by GitHub
parent e4cae908fa
commit 9464068625
2 changed files with 17 additions and 8 deletions
@@ -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) 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) CALL_ENABLED_HOOKS(MailScript, MAILHOOK_ON_BEFORE_MAIL_DRAFT_SEND_MAIL_TO, script->OnBeforeMailDraftSendMailTo(mailDraft, receiver, sender, checked, deliver_delay, custom_expiration, deleteMailItemsFromDB, sendMail));
{
script->OnBeforeMailDraftSendMailTo(mailDraft, receiver, sender, checked, deliver_delay, custom_expiration, deleteMailItemsFromDB, sendMail);\
});
} }
MailScript::MailScript(const char* name) MailScript::MailScript(const char* name, std::vector<uint16> enabledHooks)
: ScriptObject(name) : 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>; template class AC_GAME_API ScriptRegistry<MailScript>;
@@ -19,11 +19,18 @@
#define SCRIPT_OBJECT_MAIL_SCRIPT_H_ #define SCRIPT_OBJECT_MAIL_SCRIPT_H_
#include "ScriptObject.h" #include "ScriptObject.h"
#include <vector>
enum MailHook
{
MAILHOOK_ON_BEFORE_MAIL_DRAFT_SEND_MAIL_TO,
MAILHOOK_END
};
class MailScript : public ScriptObject class MailScript : public ScriptObject
{ {
protected: protected:
MailScript(const char* name); MailScript(const char* name, std::vector<uint16> enabledHooks = std::vector<uint16>());
public: public:
// Called before mail is sent // Called before mail is sent