diff options
| author | 天鹿 <18535853+PkllonG@users.noreply.github.com> | 2024-04-12 04:10:02 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-04-11 17:10:02 -0300 |
| commit | f05200fcca36a69060384df5e91a7c15aef27b19 (patch) | |
| tree | 6b55d46e19638b4cf47513c5a91c763bde60a760 /src/server/game/Scripting/ScriptDefines | |
| parent | 33592f93cf0010c63eb4896fc95be24397655c19 (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.cpp | 66 | ||||
| -rw-r--r-- | src/server/game/Scripting/ScriptDefines/AuctionHouseScript.h | 18 |
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. |
