dungeon_crawler

view prototype/src/tile.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 f3030df27110
children 303743485aba
line source
1 #ifndef TILE_H_
2 #define TILE_H_
4 #include <vector>
5 #include <map>
6 #include <assimp/scene.h>
7 #include <psys/psys.h>
8 #include "mesh.h"
9 #include "light.h"
10 #include "audio/sample.h"
12 enum {
13 TILE_NORTH = 1,
14 TILE_SOUTH = 2,
15 TILE_EAST = 4,
16 TILE_WEST = 8,
17 TILE_ALL = 0xffff
18 };
20 enum {
21 TILE_SAMPLE_WALK,
22 TILE_SAMPLE_RUN,
24 MAX_TILE_SAMPLES
25 };
27 class TileSet;
29 class Tile {
30 private:
31 TileSet *tset;
33 AudioSample *samples[MAX_TILE_SAMPLES];
35 std::vector<Mesh*> meshes;
36 std::vector<unsigned int> mesh_side, light_side, psys_side;
37 std::vector<Light*> lights;
38 // attributes for gridcell-unique particle systems
39 std::vector<struct psys_attributes*> psattr;
40 // global particle systems (simulated once, drawn for each tile instance).
41 std::vector<struct psys_emitter*> psys_global;
42 long last_upd;
44 int load_lights(const aiScene *scn);
45 int load_meshes(const aiScene *scn, const std::map<aiMesh*, aiNode*> &nmap);
47 public:
48 Tile(TileSet *tileset = 0);
49 ~Tile();
51 AudioSample *get_sample(int sidx) const;
53 const struct psys_attributes * const *get_unique_psys() const;
54 int get_unique_psys_count() const;
56 bool load(const char *fname);
58 void update(unsigned long msec, float dt);
60 void draw(unsigned int drawmask) const;
61 void draw_lights(unsigned int drawmask) const;
62 void draw_post(unsigned int drawmask) const;
63 };
66 #endif // TILE_H_