diff options
Diffstat (limited to 'src/game/ObjectGridLoader.h')
-rw-r--r-- | src/game/ObjectGridLoader.h | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/game/ObjectGridLoader.h b/src/game/ObjectGridLoader.h index f4d6eea1967..768f1f994db 100644 --- a/src/game/ObjectGridLoader.h +++ b/src/game/ObjectGridLoader.h @@ -17,27 +17,36 @@ * 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_OBJECTGRIDLOADER_H #define TRINITY_OBJECTGRIDLOADER_H + #include "Utilities/TypeList.h" #include "Platform/Define.h" #include "GameSystem/GridLoader.h" #include "GridDefines.h" #include "Cell.h" + class ObjectWorldLoader; + class TRINITY_DLL_DECL ObjectGridLoader { friend class ObjectWorldLoader; + public: ObjectGridLoader(NGridType &grid, Map* map, const Cell &cell) : i_cell(cell), i_grid(grid), i_map(map), i_gameObjects(0), i_creatures(0), i_corpses (0) {} + void Load(GridType &grid); void Visit(GameObjectMapType &m); void Visit(CreatureMapType &m); void Visit(CorpseMapType &) {} + void Visit(DynamicObjectMapType&) { } + void LoadN(void); + private: Cell i_cell; NGridType &i_grid; @@ -46,10 +55,12 @@ class TRINITY_DLL_DECL ObjectGridLoader uint32 i_creatures; uint32 i_corpses; }; + class TRINITY_DLL_DECL ObjectGridUnloader { public: ObjectGridUnloader(NGridType &grid) : i_grid(grid) {} + void MoveToRespawnN(); void UnloadN() { @@ -62,15 +73,18 @@ class TRINITY_DLL_DECL ObjectGridUnloader } } } + void Unload(GridType &grid); template<class T> void Visit(GridRefManager<T> &m); private: NGridType &i_grid; }; + class TRINITY_DLL_DECL ObjectGridStoper { public: ObjectGridStoper(NGridType &grid) : i_grid(grid) {} + void StopN() { for(unsigned int x=0; x < MAX_NUMBER_OF_CELLS; ++x) @@ -82,16 +96,20 @@ class TRINITY_DLL_DECL ObjectGridStoper } } } + void Stop(GridType &grid); void Visit(CreatureMapType &m); + template<class NONACTIVE> void Visit(GridRefManager<NONACTIVE> &) {} private: NGridType &i_grid; }; + class TRINITY_DLL_DECL ObjectGridCleaner { public: ObjectGridCleaner(NGridType &grid) : i_grid(grid) {} + void CleanN() { for(unsigned int x=0; x < MAX_NUMBER_OF_CELLS; ++x) @@ -103,12 +121,14 @@ class TRINITY_DLL_DECL ObjectGridCleaner } } } + void Stop(GridType &grid); void Visit(CreatureMapType &m); template<class T> void Visit(GridRefManager<T> &); private: NGridType &i_grid; }; + typedef GridLoader<Player, AllWorldObjectTypes, AllGridObjectTypes> GridLoaderType; #endif |