aboutsummaryrefslogtreecommitdiff
path: root/src/game/MapInstanced.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/MapInstanced.h')
-rw-r--r--src/game/MapInstanced.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/game/MapInstanced.h b/src/game/MapInstanced.h
index 80501b8a747..22622d362ce 100644
--- a/src/game/MapInstanced.h
+++ b/src/game/MapInstanced.h
@@ -17,17 +17,22 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
+
#ifndef TRINITY_MAP_INSTANCED_H
#define TRINITY_MAP_INSTANCED_H
+
#include "Map.h"
#include "InstanceSaveMgr.h"
+
class TRINITY_DLL_DECL MapInstanced : public Map
{
friend class MapManager;
public:
typedef UNORDERED_MAP< uint32, Map* > InstancedMaps;
+
MapInstanced(uint32 id, time_t expiry);
~MapInstanced() {}
+
// functions overwrite Map versions
void Update(const uint32&);
void DelayedUpdate(const uint32 diff);
@@ -35,31 +40,40 @@ class TRINITY_DLL_DECL MapInstanced : public Map
bool RemoveBones(uint64 guid, float x, float y);
void UnloadAll();
bool CanEnter(Player* player);
+
Map* CreateInstance(const uint32 mapId, Player * player, uint32 instanceId);
Map* FindMap(uint32 InstanceId) const { return _FindMap(InstanceId); }
bool DestroyInstance(InstancedMaps::iterator &itr);
+
void AddGridMapReference(const GridPair &p)
{
++GridMapReference[p.x_coord][p.y_coord];
SetUnloadReferenceLock(GridPair(63-p.x_coord, 63-p.y_coord), true);
}
+
void RemoveGridMapReference(GridPair const& p)
{
--GridMapReference[p.x_coord][p.y_coord];
if (!GridMapReference[p.x_coord][p.y_coord])
SetUnloadReferenceLock(GridPair(63-p.x_coord, 63-p.y_coord), false);
}
+
InstancedMaps &GetInstancedMaps() { return m_InstancedMaps; }
virtual void InitVisibilityDistance();
+
private:
+
InstanceMap* CreateInstance(uint32 InstanceId, InstanceSave *save, uint8 difficulty);
BattleGroundMap* CreateBattleGround(uint32 InstanceId);
+
InstancedMaps m_InstancedMaps;
+
Map* _FindMap(uint32 InstanceId) const
{
InstancedMaps::const_iterator i = m_InstancedMaps.find(InstanceId);
return(i == m_InstancedMaps.end() ? NULL : i->second);
}
+
uint16 GridMapReference[MAX_NUMBER_OF_GRIDS][MAX_NUMBER_OF_GRIDS];
};
#endif