diff options
Diffstat (limited to 'src/server/game/Maps/MapManager.h')
-rw-r--r-- | src/server/game/Maps/MapManager.h | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/server/game/Maps/MapManager.h b/src/server/game/Maps/MapManager.h index 2323e31ab9a..5754415ba73 100644 --- a/src/server/game/Maps/MapManager.h +++ b/src/server/game/Maps/MapManager.h @@ -23,6 +23,7 @@ #include "MapInstanced.h" #include "GridStates.h" #include "MapUpdater.h" +#include "UniqueTrackablePtr.h" #include <boost/dynamic_bitset.hpp> class Transport; @@ -140,7 +141,7 @@ class TC_GAME_API MapManager bool IsScriptScheduled() const { return _scheduledScripts > 0; } private: - typedef std::unordered_map<uint32, Map*> MapMapType; + typedef std::unordered_map<uint32, Trinity::unique_trackable_ptr<Map>> MapMapType; typedef boost::dynamic_bitset<size_t> InstanceIds; MapManager(); @@ -149,7 +150,7 @@ class TC_GAME_API MapManager Map* FindBaseMap(uint32 mapId) const { MapMapType::const_iterator iter = i_maps.find(mapId); - return (iter == i_maps.end() ? nullptr : iter->second); + return (iter == i_maps.end() ? nullptr : iter->second.get()); } MapManager(MapManager const&) = delete; @@ -175,12 +176,12 @@ void MapManager::DoForAllMaps(Worker&& worker) for (auto& mapPair : i_maps) { - Map* map = mapPair.second; + Map* map = mapPair.second.get(); if (MapInstanced* mapInstanced = map->ToMapInstanced()) { MapInstanced::InstancedMaps& instances = mapInstanced->GetInstancedMaps(); for (auto& instancePair : instances) - worker(instancePair.second); + worker(instancePair.second.get()); } else worker(map); @@ -195,12 +196,12 @@ inline void MapManager::DoForAllMapsWithMapId(uint32 mapId, Worker&& worker) auto itr = i_maps.find(mapId); if (itr != i_maps.end()) { - Map* map = itr->second; + Map* map = itr->second.get(); if (MapInstanced* mapInstanced = map->ToMapInstanced()) { MapInstanced::InstancedMaps& instances = mapInstanced->GetInstancedMaps(); for (auto& p : instances) - worker(p.second); + worker(p.second.get()); } else worker(map); |