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:54 +0800
committerGitHub <noreply@github.com>2024-04-12 10:55:54 -0300
commit1ecce50e06ebdde10500c5f72b9a0f5813b1c89b (patch)
tree53c3cb761e203b97383adbc664f22cfa278a8612 /src/server/game/Scripting/ScriptDefines
parent9464068625e634024af00fe8b0ce6efb435c84a3 (diff)
feat(Core/Scripts): Optimize LootScript (#18715)
* Add files via upload * Add files via upload * Add files via upload * Add files via upload * Add files via upload * Update LootScript.h
Diffstat (limited to 'src/server/game/Scripting/ScriptDefines')
-rw-r--r--src/server/game/Scripting/ScriptDefines/LootScript.cpp15
-rw-r--r--src/server/game/Scripting/ScriptDefines/LootScript.h9
2 files changed, 17 insertions, 7 deletions
diff --git a/src/server/game/Scripting/ScriptDefines/LootScript.cpp b/src/server/game/Scripting/ScriptDefines/LootScript.cpp
index 6b49ff5a1b..a6231b4a48 100644
--- a/src/server/game/Scripting/ScriptDefines/LootScript.cpp
+++ b/src/server/game/Scripting/ScriptDefines/LootScript.cpp
@@ -23,13 +23,16 @@ void ScriptMgr::OnLootMoney(Player* player, uint32 gold)
{
ASSERT(player);
- ExecuteScript<LootScript>([&](LootScript* script)
- {
- script->OnLootMoney(player, gold);
- });
+ CALL_ENABLED_HOOKS(LootScript, LOOTHOOK_ON_LOOT_MONEY, script->OnLootMoney(player, gold));
}
-LootScript::LootScript(const char* name) : ScriptObject(name)
+LootScript::LootScript(const char* name, std::vector<uint16> enabledHooks)
+ : ScriptObject(name, LOOTHOOK_END)
{
- ScriptRegistry<LootScript>::AddScript(this);
+ // If empty - enable all available hooks.
+ if (enabledHooks.empty())
+ for (uint16 i = 0; i < LOOTHOOK_END; ++i)
+ enabledHooks.emplace_back(i);
+
+ ScriptRegistry<LootScript>::AddScript(this, std::move(enabledHooks));
}
diff --git a/src/server/game/Scripting/ScriptDefines/LootScript.h b/src/server/game/Scripting/ScriptDefines/LootScript.h
index d717113836..445abdddcc 100644
--- a/src/server/game/Scripting/ScriptDefines/LootScript.h
+++ b/src/server/game/Scripting/ScriptDefines/LootScript.h
@@ -19,11 +19,18 @@
#define SCRIPT_OBJECT_LOOT_SCRIPT_H_
#include "ScriptObject.h"
+#include <vector>
+
+enum LootHook
+{
+ LOOTHOOK_ON_LOOT_MONEY,
+ LOOTHOOK_END
+};
class LootScript : public ScriptObject
{
protected:
- LootScript(const char* name);
+ LootScript(const char* name, std::vector<uint16> enabledHooks = std::vector<uint16>());
public:
[[nodiscard]] bool IsDatabaseBound() const override { return false; }