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_
|