From e8101bf60fe2d83ef66ad983bd41f515d628f6b3 Mon Sep 17 00:00:00 2001 From: VladimirMangos Date: Mon, 17 Nov 2008 14:54:12 +0300 Subject: [PATCH] Allow constant only access to m_mapRefManager using Map::GetPlayers() --- src/game/Map.cpp | 4 ++-- src/game/Map.h | 10 +++++----- src/game/MapManager.cpp | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/game/Map.cpp b/src/game/Map.cpp index 59c99e61a..606d53df6 100644 --- a/src/game/Map.cpp +++ b/src/game/Map.cpp @@ -1783,9 +1783,9 @@ void InstanceMap::UnloadAll(bool pForce) Map::UnloadAll(pForce); } -void InstanceMap::SendResetWarnings(uint32 timeLeft) +void InstanceMap::SendResetWarnings(uint32 timeLeft) const { - for(MapRefManager::iterator itr = m_mapRefManager.begin(); itr != m_mapRefManager.end(); ++itr) + for(MapRefManager::const_iterator itr = m_mapRefManager.begin(); itr != m_mapRefManager.end(); ++itr) itr->getSource()->SendInstanceResetWarning(GetId(), timeLeft); } diff --git a/src/game/Map.h b/src/game/Map.h index b3f85215b..d24523e84 100644 --- a/src/game/Map.h +++ b/src/game/Map.h @@ -125,6 +125,7 @@ typedef UNORDERED_MAP CreatureMoveList; class MANGOS_DLL_SPEC Map : public GridRefManager, public MaNGOS::ObjectLevelLockable { + friend class MapReference; public: Map(uint32 id, time_t, uint32 InstanceId, uint8 SpawnMode); virtual ~Map(); @@ -240,8 +241,8 @@ class MANGOS_DLL_SPEC Map : public GridRefManager, public MaNGOS::Obj void SendToPlayers(WorldPacket const* data) const; - MapRefManager m_mapRefManager; - + typedef MapRefManager PlayerList; + PlayerList const& GetPlayers() const { return m_mapRefManager; } private: void LoadVMap(int pX, int pY); void LoadMap(uint32 mapid, uint32 instanceid, int x,int y); @@ -290,6 +291,7 @@ class MANGOS_DLL_SPEC Map : public GridRefManager, public MaNGOS::Obj uint32 i_InstanceId; uint32 m_unloadTimer; + MapRefManager m_mapRefManager; private: typedef GridReadGuard ReadGuard; typedef GridWriteGuard WriteGuard; @@ -329,8 +331,6 @@ enum InstanceResetMethod class MANGOS_DLL_SPEC InstanceMap : public Map { public: - typedef std::list PlayerList; // online players only - InstanceMap(uint32 id, time_t, uint32 InstanceId, uint8 SpawnMode); ~InstanceMap(); bool Add(Player *); @@ -344,7 +344,7 @@ class MANGOS_DLL_SPEC InstanceMap : public Map time_t GetResetTime(); void UnloadAll(bool pForce); bool CanEnter(Player* player); - void SendResetWarnings(uint32 timeLeft); + void SendResetWarnings(uint32 timeLeft) const; void SetResetSchedule(bool on); private: bool m_resetAfterUnload; diff --git a/src/game/MapManager.cpp b/src/game/MapManager.cpp index bf2239e6e..8833b8322 100644 --- a/src/game/MapManager.cpp +++ b/src/game/MapManager.cpp @@ -336,7 +336,7 @@ uint32 MapManager::GetNumPlayersInInstances() MapInstanced::InstancedMaps &maps = ((MapInstanced *)map)->GetInstancedMaps(); for(MapInstanced::InstancedMaps::iterator mitr = maps.begin(); mitr != maps.end(); ++mitr) if(mitr->second->IsDungeon()) - ret += ((InstanceMap*)mitr->second)->m_mapRefManager.getSize(); + ret += ((InstanceMap*)mitr->second)->GetPlayers().getSize(); } return ret; } -- 2.11.4.GIT