diff options
author | Shauren <shauren.trinity@gmail.com> | 2024-03-14 20:32:03 +0100 |
---|---|---|
committer | funjoker <funjoker109@gmail.com> | 2024-03-25 20:22:48 +0100 |
commit | 67577f804314c8876d5509e067e62fb9800eea86 (patch) | |
tree | eda2f9a114f10365dde5a89c5d1d978bfd64edbd /src/server/game/Maps/MapManager.cpp | |
parent | 11f77687734ed6b0c5496e1abd9a97743b30079f (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.cpp | 16 |
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(); |