aboutsummaryrefslogtreecommitdiff
path: root/src/game/Map.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/Map.h')
-rw-r--r--src/game/Map.h35
1 files changed, 26 insertions, 9 deletions
diff --git a/src/game/Map.h b/src/game/Map.h
index ed918125328..bbb861e8aeb 100644
--- a/src/game/Map.h
+++ b/src/game/Map.h
@@ -43,9 +43,12 @@ class WorldPacket;
class InstanceData;
class Group;
class InstanceSave;
+class Object;
class WorldObject;
class TempSummon;
class CreatureGroup;
+struct ScriptInfo;
+struct ScriptAction;
typedef ACE_RW_Thread_Mutex GridRWLock;
@@ -74,10 +77,11 @@ typedef MaNGOS::SingleThreaded<GridRWLock>::Lock NullGuard;
#define MAP_MAGIC 'SPAM'
#define MAP_VERSION_MAGIC '0.1w'
#define MAP_AREA_MAGIC 'AERA'
-#define MAP_HEIGTH_MAGIC 'TGHM'
+#define MAP_HEIGHT_MAGIC 'TGHM'
#define MAP_LIQUID_MAGIC 'QILM'
-struct map_fileheader{
+struct map_fileheader
+{
uint32 mapMagic;
uint32 versionMagic;
uint32 areaMapOffset;
@@ -89,17 +93,20 @@ struct map_fileheader{
};
#define MAP_AREA_NO_AREA 0x0001
-struct map_areaHeader{
+
+struct map_areaHeader
+{
uint32 fourcc;
uint16 flags;
uint16 gridArea;
};
-#define MAP_HEIGHT_NO_HIGHT 0x0001
+#define MAP_HEIGHT_NO_HEIGHT 0x0001
#define MAP_HEIGHT_AS_INT16 0x0002
#define MAP_HEIGHT_AS_INT8 0x0004
-struct map_heightHeader{
+struct map_heightHeader
+{
uint32 fourcc;
uint32 flags;
float gridHeight;
@@ -107,8 +114,10 @@ struct map_heightHeader{
};
#define MAP_LIQUID_NO_TYPE 0x0001
-#define MAP_LIQUID_NO_HIGHT 0x0002
-struct map_liquidHeader{
+#define MAP_LIQUID_NO_HEIGHT 0x0002
+
+struct map_liquidHeader
+{
uint32 fourcc;
uint16 flags;
uint16 liquidType;
@@ -119,7 +128,8 @@ struct map_liquidHeader{
float liquidLevel;
};
-enum ZLiquidStatus{
+enum ZLiquidStatus
+{
LIQUID_MAP_NO_WATER = 0x00000000,
LIQUID_MAP_ABOVE_WATER = 0x00000001,
LIQUID_MAP_WATER_WALK = 0x00000002,
@@ -138,7 +148,8 @@ enum ZLiquidStatus{
#define MAP_LIQUID_TYPE_DARK_WATER 0x10
#define MAP_LIQUID_TYPE_WMO_WATER 0x20
-struct LiquidData{
+struct LiquidData
+{
uint32 type;
float level;
float depth_level;
@@ -398,6 +409,10 @@ class MANGOS_DLL_SPEC Map : public GridRefManager<NGridType>, public MaNGOS::Obj
typedef MapRefManager PlayerList;
PlayerList const& GetPlayers() const { return m_mapRefManager; }
+ //per-map script storage
+ void ScriptsStart(std::map<uint32, std::multimap<uint32, ScriptInfo> > const& scripts, uint32 id, Object* source, Object* target);
+ void ScriptCommandStart(ScriptInfo const& script, uint32 delay, Object* source, Object* target);
+
// must called with AddToWorld
template<class T>
void AddToActive(T* obj) { AddToActiveHelper(obj); }
@@ -467,6 +482,7 @@ class MANGOS_DLL_SPEC Map : public GridRefManager<NGridType>, public MaNGOS::Obj
void setGridObjectDataLoaded(bool pLoaded, uint32 x, uint32 y) { getNGrid(x,y)->setGridObjectDataLoaded(pLoaded); }
void setNGrid(NGridType* grid, uint32 x, uint32 y);
+ void ScriptsProcess();
void UpdateActiveCells(const float &x, const float &y, const uint32 &t_diff);
protected:
@@ -508,6 +524,7 @@ class MANGOS_DLL_SPEC Map : public GridRefManager<NGridType>, public MaNGOS::Obj
std::vector<Unit*> i_unitsToNotify;
std::set<WorldObject *> i_objectsToRemove;
std::map<WorldObject*, bool> i_objectsToSwitch;
+ std::multimap<time_t, ScriptAction> m_scriptSchedule;
// Type specific code for add/remove to/from grid
template<class T>