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

View File

@@ -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>;

View File

@@ -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