summaryrefslogtreecommitdiff
path: root/src/server/game/Scripting/ScriptDefines
diff options
context:
space:
mode:
authorWalter Pagani <paganiwalter@gmail.com>2024-09-21 17:25:22 -0300
committerGitHub <noreply@github.com>2024-09-21 22:25:22 +0200
commitcfd7bf416207f78028ed1532db3d2bfd44dab406 (patch)
tree9b7d20af2f917e6e8357d1a86d0e2564fbbaac27 /src/server/game/Scripting/ScriptDefines
parentb364e00238c43cd326fa54aa3e5c4cd8a8c9d770 (diff)
chore(Core/AllMapScript) Update structure (#19979)
* fix(Core/AllMapScript) Update structure to use CALL_ENABLED_HOOKS * fatal error: no template named 'vector' in namespace 'std' * fix build Co-authored-by: Anton Popovichenko <anton.popovichenko@mendix.com> --------- Co-authored-by: Anton Popovichenko <anton.popovichenko@mendix.com>
Diffstat (limited to 'src/server/game/Scripting/ScriptDefines')
-rw-r--r--src/server/game/Scripting/ScriptDefines/AllMapScript.cpp45
-rw-r--r--src/server/game/Scripting/ScriptDefines/AllMapScript.h15
2 files changed, 28 insertions, 32 deletions
diff --git a/src/server/game/Scripting/ScriptDefines/AllMapScript.cpp b/src/server/game/Scripting/ScriptDefines/AllMapScript.cpp
index c778b8fffb..a439073651 100644
--- a/src/server/game/Scripting/ScriptDefines/AllMapScript.cpp
+++ b/src/server/game/Scripting/ScriptDefines/AllMapScript.cpp
@@ -88,10 +88,7 @@ void ScriptMgr::OnCreateMap(Map* map)
{
ASSERT(map);
- ExecuteScript<AllMapScript>([&](AllMapScript* script)
- {
- script->OnCreateMap(map);
- });
+ CALL_ENABLED_HOOKS(AllMapScript, ALLMAPHOOK_ON_CREATE_MAP, script->OnCreateMap(map));
ForeachMaps<WorldMapScript>(map,
[&](WorldMapScript* script)
@@ -116,10 +113,7 @@ void ScriptMgr::OnDestroyMap(Map* map)
{
ASSERT(map);
- ExecuteScript<AllMapScript>([&](AllMapScript* script)
- {
- script->OnDestroyMap(map);
- });
+ CALL_ENABLED_HOOKS(AllMapScript, ALLMAPHOOK_ON_DESTROY_MAP, script->OnDestroyMap(map));
ForeachMaps<WorldMapScript>(map,
[&](WorldMapScript* script)
@@ -193,10 +187,7 @@ void ScriptMgr::OnPlayerEnterMap(Map* map, Player* player)
ASSERT(map);
ASSERT(player);
- ExecuteScript<AllMapScript>([&](AllMapScript* script)
- {
- script->OnPlayerEnterAll(map, player);
- });
+ CALL_ENABLED_HOOKS(AllMapScript, ALLMAPHOOK_ON_PLAYER_ENTER_ALL, script->OnPlayerEnterAll(map, player));
ExecuteScript<PlayerScript>([=](PlayerScript* script)
{
@@ -227,10 +218,7 @@ void ScriptMgr::OnPlayerLeaveMap(Map* map, Player* player)
ASSERT(map);
ASSERT(player);
- ExecuteScript<AllMapScript>([&](AllMapScript* script)
- {
- script->OnPlayerLeaveAll(map, player);
- });
+ CALL_ENABLED_HOOKS(AllMapScript, ALLMAPHOOK_ON_PLAYER_LEAVE_ALL, script->OnPlayerLeaveAll(map, player));
ForeachMaps<WorldMapScript>(map,
[&](WorldMapScript* script)
@@ -255,10 +243,7 @@ void ScriptMgr::OnMapUpdate(Map* map, uint32 diff)
{
ASSERT(map);
- ExecuteScript<AllMapScript>([&](AllMapScript* script)
- {
- script->OnMapUpdate(map, diff);
- });
+ CALL_ENABLED_HOOKS(AllMapScript, ALLMAPHOOK_ON_MAP_UPDATE, script->OnMapUpdate(map, diff));
ForeachMaps<WorldMapScript>(map,
[&](WorldMapScript* script)
@@ -281,24 +266,22 @@ void ScriptMgr::OnMapUpdate(Map* map, uint32 diff)
void ScriptMgr::OnBeforeCreateInstanceScript(InstanceMap* instanceMap, InstanceScript** instanceData, bool load, std::string data, uint32 completedEncounterMask)
{
- ExecuteScript<AllMapScript>([&](AllMapScript* script)
- {
- script->OnBeforeCreateInstanceScript(instanceMap, instanceData, load, data, completedEncounterMask);
- });
+ CALL_ENABLED_HOOKS(AllMapScript, ALLMAPHOOK_ON_BEFORE_CREATE_INSTANCE_SCRIPT, script->OnBeforeCreateInstanceScript(instanceMap, instanceData, load, data, completedEncounterMask));
}
void ScriptMgr::OnDestroyInstance(MapInstanced* mapInstanced, Map* map)
{
- ExecuteScript<AllMapScript>([&](AllMapScript* script)
- {
- script->OnDestroyInstance(mapInstanced, map);
- });
+ CALL_ENABLED_HOOKS(AllMapScript, ALLMAPHOOK_ON_DESTROY_INSTANCE, script->OnDestroyInstance(mapInstanced, map));
}
-AllMapScript::AllMapScript(const char* name) :
- ScriptObject(name)
+AllMapScript::AllMapScript(const char* name, std::vector<uint16> enabledHooks) : ScriptObject(name, ALLMAPHOOK_END)
{
- ScriptRegistry<AllMapScript>::AddScript(this);
+ // If empty - enable all available hooks.
+ if (enabledHooks.empty())
+ for (uint16 i = 0; i < ALLMAPHOOK_END; ++i)
+ enabledHooks.emplace_back(i);
+
+ ScriptRegistry<AllMapScript>::AddScript(this, std::move(enabledHooks));
}
template class AC_GAME_API ScriptRegistry<AllMapScript>;
diff --git a/src/server/game/Scripting/ScriptDefines/AllMapScript.h b/src/server/game/Scripting/ScriptDefines/AllMapScript.h
index 77479fc1b0..86e7a0e6d2 100644
--- a/src/server/game/Scripting/ScriptDefines/AllMapScript.h
+++ b/src/server/game/Scripting/ScriptDefines/AllMapScript.h
@@ -19,11 +19,24 @@
#define SCRIPT_OBJECT_ALL_MAP_SCRIPT_H_
#include "ScriptObject.h"
+#include <vector>
+
+enum AllMapHook
+{
+ ALLMAPHOOK_ON_PLAYER_ENTER_ALL,
+ ALLMAPHOOK_ON_PLAYER_LEAVE_ALL,
+ ALLMAPHOOK_ON_BEFORE_CREATE_INSTANCE_SCRIPT,
+ ALLMAPHOOK_ON_DESTROY_INSTANCE,
+ ALLMAPHOOK_ON_CREATE_MAP,
+ ALLMAPHOOK_ON_DESTROY_MAP,
+ ALLMAPHOOK_ON_MAP_UPDATE,
+ ALLMAPHOOK_END
+};
class AllMapScript : public ScriptObject
{
protected:
- AllMapScript(const char* name);
+ AllMapScript(const char* name, std::vector<uint16> enabledHooks = std::vector<uint16>());
public:
/**