summaryrefslogtreecommitdiff
path: root/src/server/game/Scripting/ScriptDefines
diff options
context:
space:
mode:
author天鹿 <18535853+PkllonG@users.noreply.github.com>2024-04-12 04:10:02 +0800
committerGitHub <noreply@github.com>2024-04-11 17:10:02 -0300
commitf05200fcca36a69060384df5e91a7c15aef27b19 (patch)
tree6b55d46e19638b4cf47513c5a91c763bde60a760 /src/server/game/Scripting/ScriptDefines
parent33592f93cf0010c63eb4896fc95be24397655c19 (diff)
feat(Core/Scripts): Optimize AuctionHouseScript need#18672 (#18698)
Add files via upload
Diffstat (limited to 'src/server/game/Scripting/ScriptDefines')
-rw-r--r--src/server/game/Scripting/ScriptDefines/AuctionHouseScript.cpp66
-rw-r--r--src/server/game/Scripting/ScriptDefines/AuctionHouseScript.h18
2 files changed, 36 insertions, 48 deletions
diff --git a/src/server/game/Scripting/ScriptDefines/AuctionHouseScript.cpp b/src/server/game/Scripting/ScriptDefines/AuctionHouseScript.cpp
index 4664d1b95a..8247c28fda 100644
--- a/src/server/game/Scripting/ScriptDefines/AuctionHouseScript.cpp
+++ b/src/server/game/Scripting/ScriptDefines/AuctionHouseScript.cpp
@@ -24,10 +24,7 @@ void ScriptMgr::OnAuctionAdd(AuctionHouseObject* ah, AuctionEntry* entry)
ASSERT(ah);
ASSERT(entry);
- ExecuteScript<AuctionHouseScript>([&](AuctionHouseScript* script)
- {
- script->OnAuctionAdd(ah, entry);
- });
+ CALL_ENABLED_HOOKS(AuctionHouseScript, AUCTIONHOUSEHOOK_ON_AUCTION_ADD, script->OnAuctionAdd(ah, entry));
}
void ScriptMgr::OnAuctionRemove(AuctionHouseObject* ah, AuctionEntry* entry)
@@ -35,10 +32,7 @@ void ScriptMgr::OnAuctionRemove(AuctionHouseObject* ah, AuctionEntry* entry)
ASSERT(ah);
ASSERT(entry);
- ExecuteScript<AuctionHouseScript>([&](AuctionHouseScript* script)
- {
- script->OnAuctionRemove(ah, entry);
- });
+ CALL_ENABLED_HOOKS(AuctionHouseScript, AUCTIONHOUSEHOOK_ON_AUCTION_REMOVE, script->OnAuctionRemove(ah, entry));
}
void ScriptMgr::OnAuctionSuccessful(AuctionHouseObject* ah, AuctionEntry* entry)
@@ -46,10 +40,7 @@ void ScriptMgr::OnAuctionSuccessful(AuctionHouseObject* ah, AuctionEntry* entry)
ASSERT(ah);
ASSERT(entry);
- ExecuteScript<AuctionHouseScript>([&](AuctionHouseScript* script)
- {
- script->OnAuctionSuccessful(ah, entry);
- });
+ CALL_ENABLED_HOOKS(AuctionHouseScript, AUCTIONHOUSEHOOK_ON_AUCTION_SUCCESSFUL, script->OnAuctionSuccessful(ah, entry));
}
void ScriptMgr::OnAuctionExpire(AuctionHouseObject* ah, AuctionEntry* entry)
@@ -57,72 +48,53 @@ void ScriptMgr::OnAuctionExpire(AuctionHouseObject* ah, AuctionEntry* entry)
ASSERT(ah);
ASSERT(entry);
- ExecuteScript<AuctionHouseScript>([&](AuctionHouseScript* script)
- {
- script->OnAuctionExpire(ah, entry);
- });
+ CALL_ENABLED_HOOKS(AuctionHouseScript, AUCTIONHOUSEHOOK_ON_AUCTION_EXPIRE, script->OnAuctionExpire(ah, entry));
}
void ScriptMgr::OnBeforeAuctionHouseMgrSendAuctionWonMail(AuctionHouseMgr* auctionHouseMgr, AuctionEntry* auction, Player* bidder, uint32& bidder_accId, bool& sendNotification, bool& updateAchievementCriteria, bool& sendMail)
{
- ExecuteScript<AuctionHouseScript>([&](AuctionHouseScript* script)
- {
- script->OnBeforeAuctionHouseMgrSendAuctionWonMail(auctionHouseMgr, auction, bidder, bidder_accId, sendNotification, updateAchievementCriteria, sendMail);
- });
+ CALL_ENABLED_HOOKS(AuctionHouseScript, AUCTIONHOUSEHOOK_ON_BEFORE_AUCTIONHOUSEMGR_SEND_AUCTION_WON_MAIL, script->OnBeforeAuctionHouseMgrSendAuctionWonMail(auctionHouseMgr, auction, bidder, bidder_accId, sendNotification, updateAchievementCriteria, sendMail));
}
void ScriptMgr::OnBeforeAuctionHouseMgrSendAuctionSalePendingMail(AuctionHouseMgr* auctionHouseMgr, AuctionEntry* auction, Player* owner, uint32& owner_accId, bool& sendMail)
{
- ExecuteScript<AuctionHouseScript>([&](AuctionHouseScript* script)
- {
- script->OnBeforeAuctionHouseMgrSendAuctionSalePendingMail(auctionHouseMgr, auction, owner, owner_accId, sendMail);
- });
+ CALL_ENABLED_HOOKS(AuctionHouseScript, AUCTIONHOUSEHOOK_ON_BEFORE_AUCTIONHOUSEMGR_SEND_AUCTION_SALE_PENDING_MAIL, script->OnBeforeAuctionHouseMgrSendAuctionSalePendingMail(auctionHouseMgr, auction, owner, owner_accId, sendMail));
}
void ScriptMgr::OnBeforeAuctionHouseMgrSendAuctionSuccessfulMail(AuctionHouseMgr* auctionHouseMgr, AuctionEntry* auction, Player* owner, uint32& owner_accId, uint32& profit, bool& sendNotification, bool& updateAchievementCriteria, bool& sendMail)
{
- ExecuteScript<AuctionHouseScript>([&](AuctionHouseScript* script)
- {
- script->OnBeforeAuctionHouseMgrSendAuctionSuccessfulMail(auctionHouseMgr, auction, owner, owner_accId, profit, sendNotification, updateAchievementCriteria, sendMail);
- });
+ CALL_ENABLED_HOOKS(AuctionHouseScript, AUCTIONHOUSEHOOK_ON_BEFORE_AUCTIONHOUSEMGR_SEND_AUCTION_SUCCESSFUL_MAIL, script->OnBeforeAuctionHouseMgrSendAuctionSuccessfulMail(auctionHouseMgr, auction, owner, owner_accId, profit, sendNotification, updateAchievementCriteria, sendMail));
}
void ScriptMgr::OnBeforeAuctionHouseMgrSendAuctionExpiredMail(AuctionHouseMgr* auctionHouseMgr, AuctionEntry* auction, Player* owner, uint32& owner_accId, bool& sendNotification, bool& sendMail)
{
- ExecuteScript<AuctionHouseScript>([&](AuctionHouseScript* script)
- {
- script->OnBeforeAuctionHouseMgrSendAuctionExpiredMail(auctionHouseMgr, auction, owner, owner_accId, sendNotification, sendMail);
- });
+ CALL_ENABLED_HOOKS(AuctionHouseScript, AUCTIONHOUSEHOOK_ON_BEFORE_AUCTIONHOUSEMGR_SEND_AUCTION_EXPIRED_MAIL, script->OnBeforeAuctionHouseMgrSendAuctionExpiredMail(auctionHouseMgr, auction, owner, owner_accId, sendNotification, sendMail));
}
void ScriptMgr::OnBeforeAuctionHouseMgrSendAuctionOutbiddedMail(AuctionHouseMgr* auctionHouseMgr, AuctionEntry* auction, Player* oldBidder, uint32& oldBidder_accId, Player* newBidder, uint32& newPrice, bool& sendNotification, bool& sendMail)
{
- ExecuteScript<AuctionHouseScript>([&](AuctionHouseScript* script)
- {
- script->OnBeforeAuctionHouseMgrSendAuctionOutbiddedMail(auctionHouseMgr, auction, oldBidder, oldBidder_accId, newBidder, newPrice, sendNotification, sendMail);
- });
+ CALL_ENABLED_HOOKS(AuctionHouseScript, AUCTIONHOUSEHOOK_ON_BEFORE_AUCTIONHOUSEMGR_SEND_AUCTION_OUTBIDDED_MAIL, script->OnBeforeAuctionHouseMgrSendAuctionOutbiddedMail(auctionHouseMgr, auction, oldBidder, oldBidder_accId, newBidder, newPrice, sendNotification, sendMail));
}
void ScriptMgr::OnBeforeAuctionHouseMgrSendAuctionCancelledToBidderMail(AuctionHouseMgr* auctionHouseMgr, AuctionEntry* auction, Player* bidder, uint32& bidder_accId, bool& sendMail)
{
- ExecuteScript<AuctionHouseScript>([&](AuctionHouseScript* script)
- {
- script->OnBeforeAuctionHouseMgrSendAuctionCancelledToBidderMail(auctionHouseMgr, auction, bidder, bidder_accId, sendMail);
- });
+ CALL_ENABLED_HOOKS(AuctionHouseScript, AUCTIONHOUSEHOOK_ON_BEFORE_AUCTIONHOUSEMGR_SEND_AUCTION_CANCELLED_TO_BIDDER_MAIL, script->OnBeforeAuctionHouseMgrSendAuctionCancelledToBidderMail(auctionHouseMgr, auction, bidder, bidder_accId, sendMail));
}
void ScriptMgr::OnBeforeAuctionHouseMgrUpdate()
{
- ExecuteScript<AuctionHouseScript>([&](AuctionHouseScript* script)
- {
- script->OnBeforeAuctionHouseMgrUpdate();
- });
+ CALL_ENABLED_HOOKS(AuctionHouseScript, AUCTIONHOUSEHOOK_ON_BEFORE_AUCTIONHOUSEMGR_UPDATE, script->OnBeforeAuctionHouseMgrUpdate());
}
-AuctionHouseScript::AuctionHouseScript(const char* name)
- : ScriptObject(name)
+AuctionHouseScript::AuctionHouseScript(const char* name, std::vector<uint16> enabledHooks)
+ : ScriptObject(name, AUCTIONHOUSEHOOK_END)
{
- ScriptRegistry<AuctionHouseScript>::AddScript(this);
+ // If empty - enable all available hooks.
+ if (enabledHooks.empty())
+ for (uint16 i = 0; i < AUCTIONHOUSEHOOK_END; i++)
+ enabledHooks.emplace_back(i);
+
+ ScriptRegistry<AuctionHouseScript>::AddScript(this, std::move(enabledHooks));
}
template class AC_GAME_API ScriptRegistry<AuctionHouseScript>;
diff --git a/src/server/game/Scripting/ScriptDefines/AuctionHouseScript.h b/src/server/game/Scripting/ScriptDefines/AuctionHouseScript.h
index 02cacd1122..1134e028a9 100644
--- a/src/server/game/Scripting/ScriptDefines/AuctionHouseScript.h
+++ b/src/server/game/Scripting/ScriptDefines/AuctionHouseScript.h
@@ -20,10 +20,26 @@
#include "ScriptObject.h"
+enum AuctionHouseHook
+{
+ AUCTIONHOUSEHOOK_ON_AUCTION_ADD,
+ AUCTIONHOUSEHOOK_ON_AUCTION_REMOVE,
+ AUCTIONHOUSEHOOK_ON_AUCTION_SUCCESSFUL,
+ AUCTIONHOUSEHOOK_ON_AUCTION_EXPIRE,
+ AUCTIONHOUSEHOOK_ON_BEFORE_AUCTIONHOUSEMGR_SEND_AUCTION_WON_MAIL,
+ AUCTIONHOUSEHOOK_ON_BEFORE_AUCTIONHOUSEMGR_SEND_AUCTION_SALE_PENDING_MAIL,
+ AUCTIONHOUSEHOOK_ON_BEFORE_AUCTIONHOUSEMGR_SEND_AUCTION_SUCCESSFUL_MAIL,
+ AUCTIONHOUSEHOOK_ON_BEFORE_AUCTIONHOUSEMGR_SEND_AUCTION_EXPIRED_MAIL,
+ AUCTIONHOUSEHOOK_ON_BEFORE_AUCTIONHOUSEMGR_SEND_AUCTION_OUTBIDDED_MAIL,
+ AUCTIONHOUSEHOOK_ON_BEFORE_AUCTIONHOUSEMGR_SEND_AUCTION_CANCELLED_TO_BIDDER_MAIL,
+ AUCTIONHOUSEHOOK_ON_BEFORE_AUCTIONHOUSEMGR_UPDATE,
+ AUCTIONHOUSEHOOK_END
+};
+
class AuctionHouseScript : public ScriptObject
{
protected:
- AuctionHouseScript(const char* name);
+ AuctionHouseScript(const char* name, std::vector<uint16> enabledHooks = std::vector<uint16>());
public:
// Called when an auction is added to an auction house.