dungeon_crawler

annotate prototype/src/level.h @ 48:aa9e28670ae2

added sound playback, more to do
author John Tsiombikas <nuclear@member.fsf.org>
date Mon, 17 Sep 2012 08:40:59 +0300
parents dfd3a413ef9e
children 303743485aba
rev   line source
nuclear@1 1 #ifndef LEVEL_H_
nuclear@1 2 #define LEVEL_H_
nuclear@1 3
nuclear@1 4 #include <vector>
nuclear@1 5 #include "vmath/vmath.h"
nuclear@45 6 #include "psys/psys.h"
nuclear@48 7 #include "tile.h"
nuclear@1 8
nuclear@1 9 class GridCell;
nuclear@1 10
nuclear@1 11 class Level {
nuclear@1 12 private:
nuclear@1 13 // cells are stored as a linear array of pointers to GridCells
nuclear@1 14 // null pointers mean unpopulated cells.
nuclear@1 15 GridCell **cells;
nuclear@1 16 int xsz, ysz;
nuclear@1 17 float cell_size;
nuclear@1 18
nuclear@38 19 // secondary data structure, simple list of all populated cells
nuclear@38 20 std::vector<GridCell*> cell_list;
nuclear@38 21
nuclear@1 22 void draw_grid() const;
nuclear@1 23
nuclear@1 24 public:
nuclear@1 25 Level();
nuclear@1 26 ~Level();
nuclear@1 27
nuclear@1 28 bool load(const char *fname);
nuclear@1 29 bool save(const char *fname) const;
nuclear@1 30
nuclear@1 31 const GridCell *get_cell(int x, int y) const;
nuclear@1 32 Vector3 get_cell_pos(int x, int y) const;
nuclear@48 33 void get_cell_coords_at(const Vector3 &pos, int *xptr, int *yptr) const;
nuclear@23 34 unsigned int get_cell_dirmask(int x, int y) const;
nuclear@1 35
nuclear@38 36 void update(unsigned long msec, float dt);
nuclear@38 37
nuclear@1 38 void draw() const;
nuclear@23 39 void draw_lights() const;
nuclear@40 40 void draw_post() const;
nuclear@48 41
nuclear@48 42 AudioSample *get_sample(int x, int y, int which) const;
nuclear@1 43 };
nuclear@1 44
nuclear@1 45 class GridCell {
nuclear@1 46 private:
nuclear@1 47 // each grid-cell might contain multiple tiles.
nuclear@38 48 std::vector<Tile*> tiles;
nuclear@1 49
nuclear@45 50 // particle systems
nuclear@45 51 std::vector<struct psys_emitter*> psys;
nuclear@45 52
nuclear@1 53 public:
nuclear@38 54 GridCell(Tile *tile = 0);
nuclear@5 55
nuclear@38 56 void add_tile(Tile *tile);
nuclear@38 57
nuclear@38 58 void update(unsigned long msec, float dt);
nuclear@1 59
nuclear@5 60 void draw(unsigned int draw_mask) const;
nuclear@23 61 void draw_lights(unsigned int draw_mask) const;
nuclear@40 62 void draw_post(unsigned int draw_mask) const;
nuclear@48 63
nuclear@48 64 AudioSample *get_sample(int which) const;
nuclear@1 65 };
nuclear@1 66
nuclear@1 67 #endif // LEVEL_H_