nuclear@1: #ifndef LEVEL_H_ nuclear@1: #define LEVEL_H_ nuclear@1: nuclear@1: #include nuclear@1: #include "vmath/vmath.h" nuclear@1: nuclear@1: class GridCell; nuclear@1: class Tile; nuclear@1: nuclear@1: class Level { nuclear@1: private: nuclear@1: // cells are stored as a linear array of pointers to GridCells nuclear@1: // null pointers mean unpopulated cells. nuclear@1: GridCell **cells; nuclear@1: int xsz, ysz; nuclear@1: float cell_size; nuclear@1: nuclear@1: void draw_grid() const; nuclear@1: nuclear@1: public: nuclear@1: Level(); nuclear@1: ~Level(); nuclear@1: nuclear@1: bool load(const char *fname); nuclear@1: bool save(const char *fname) const; nuclear@1: nuclear@1: const GridCell *get_cell(int x, int y) const; nuclear@1: Vector3 get_cell_pos(int x, int y) const; nuclear@1: nuclear@1: void draw() const; nuclear@1: }; nuclear@1: nuclear@1: class GridCell { nuclear@1: private: nuclear@1: // each grid-cell might contain multiple tiles. nuclear@1: std::vector tiles; nuclear@1: nuclear@1: public: nuclear@5: GridCell(const Tile *tile = 0); nuclear@5: nuclear@1: void add_tile(const Tile *tile); nuclear@1: nuclear@5: void draw(unsigned int draw_mask) const; nuclear@1: }; nuclear@1: nuclear@1: #endif // LEVEL_H_