aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Maps/MapManager.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Maps/MapManager.h')
-rwxr-xr-xsrc/server/game/Maps/MapManager.h15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/server/game/Maps/MapManager.h b/src/server/game/Maps/MapManager.h
index c0be8ed0909..4362d305edd 100755
--- a/src/server/game/Maps/MapManager.h
+++ b/src/server/game/Maps/MapManager.h
@@ -34,6 +34,7 @@ class MapManager
{
friend class ACE_Singleton<MapManager, ACE_Thread_Mutex>;
typedef UNORDERED_MAP<uint32, Map*> MapMapType;
+ typedef std::vector<bool> InstanceIds;
public:
@@ -132,14 +133,21 @@ class MapManager
TransportMap m_TransportsByMap;
bool CanPlayerEnter(uint32 mapid, Player* player, bool loginCheck = false);
- uint32 GenerateInstanceId() { return ++i_MaxInstanceId; }
- void InitMaxInstanceId();
void InitializeVisibilityDistanceInfo();
/* statistics */
uint32 GetNumInstances();
uint32 GetNumPlayersInInstances();
+ // Instance ID management
+ void InitInstanceIds();
+ uint32 GenerateInstanceId();
+ void RegisterInstanceId(uint32 instanceId);
+ void FreeInstanceId(uint32 instanceId);
+
+ uint32 GetNextInstanceId() { return _nextInstanceId; };
+ void SetNextInstanceId(uint32 nextInstanceId) { _nextInstanceId = nextInstanceId; };
+
private:
// debugging code, should be deleted some day
void checkAndCorrectGridStatesArray(); // just for debugging to find some memory overwrites
@@ -164,7 +172,8 @@ class MapManager
MapMapType i_maps;
IntervalTimer i_timer;
- uint32 i_MaxInstanceId;
+ InstanceIds _instanceIds;
+ uint32 _nextInstanceId;
MapUpdater m_updater;
};
#define sMapMgr ACE_Singleton<MapManager, ACE_Thread_Mutex>::instance()