aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Maps/MapManager.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2024-03-14 20:32:03 +0100
committerfunjoker <funjoker109@gmail.com>2024-03-25 20:22:48 +0100
commit67577f804314c8876d5509e067e62fb9800eea86 (patch)
treeeda2f9a114f10365dde5a89c5d1d978bfd64edbd /src/server/game/Maps/MapManager.cpp
parent11f77687734ed6b0c5496e1abd9a97743b30079f (diff)
Core/Scripts: Removed script calls from constructors and destructors
(cherry picked from commit 783f9c0ea38da35c328affa27ac4cf6b7bfd8bd8)
Diffstat (limited to 'src/server/game/Maps/MapManager.cpp')
-rw-r--r--src/server/game/Maps/MapManager.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/server/game/Maps/MapManager.cpp b/src/server/game/Maps/MapManager.cpp
index 3288b8551d1..544aba6702b 100644
--- a/src/server/game/Maps/MapManager.cpp
+++ b/src/server/game/Maps/MapManager.cpp
@@ -16,6 +16,7 @@
*/
#include "MapManager.h"
+#include "BattlefieldMgr.h"
#include "Battleground.h"
#include "Containers.h"
#include "DatabaseEnv.h"
@@ -24,6 +25,7 @@
#include "InstanceLockMgr.h"
#include "Log.h"
#include "Map.h"
+#include "OutdoorPvPMgr.h"
#include "Player.h"
#include "ScenarioMgr.h"
#include "ScriptMgr.h"
@@ -237,6 +239,10 @@ Map* MapManager::CreateMap(uint32 mapId, Player* player)
{
ptr.reset(map);
map->SetWeakPtr(ptr);
+
+ sScriptMgr->OnCreateMap(map);
+ sOutdoorPvPMgr->CreateOutdoorPvPForMap(map);
+ sBattlefieldMgr->CreateBattlefieldsForMap(map);
}
}
@@ -333,6 +339,10 @@ bool MapManager::DestroyMap(Map* map)
if (map->HavePlayers())
return false;
+ sOutdoorPvPMgr->DestroyOutdoorPvPForMap(map);
+ sBattlefieldMgr->DestroyBattlefieldsForMap(map);
+ sScriptMgr->OnDestroyMap(map);
+
map->UnloadAll();
// Free up the instance id and allow it to be reused for normal dungeons, bgs and arenas
@@ -352,8 +362,14 @@ void MapManager::UnloadAll()
{
// first unload maps
for (auto iter = i_maps.begin(); iter != i_maps.end(); ++iter)
+ {
iter->second->UnloadAll();
+ sOutdoorPvPMgr->DestroyOutdoorPvPForMap(iter->second.get());
+ sBattlefieldMgr->DestroyBattlefieldsForMap(iter->second.get());
+ sScriptMgr->OnDestroyMap(iter->second.get());
+ }
+
// then delete them
i_maps.clear();