#define LEVEL_H_
#include "scenefile.h"
+#include "tileset.h"
+
+#define DEF_CELL_SIZE 3.0f
enum {
- TILE_EMPTY,
- TILE_STRAIGHT,
+ TILE_OPEN,
+ TILE_STR,
TILE_CORNER,
- TILE_DOOR
+ TILE_OPENCORNER,
+ TILE_TEE,
+ TILE_CROSS,
+ TILE_STR2OPEN,
+ TILE_STROPEN
};
enum {
struct tile {
char *name;
int type;
- struct scenefile scn;
+
+ struct meshgroup mgrp;
+
struct tile *next;
};
struct cell {
+ int x, y;
int type;
+ int tiletype, tilerot;
int wall[4];
int floor, ceil;
+ struct tile *tile;
struct meshgroup *mgrp;
int num_mgrp;
char *fname, *dirname;
int width, height;
+ int px, py; /* player start position */
+ float cell_size;
struct cell *cells;
- struct tile *tiles;
+ struct tileset *tset;
/* meshes owned by the level, constructed during geometry generation or
* loaded, excluding meshes in tiles scenefiles
*/
struct mesh *meshlist;
+
+ int visdist;
};
int load_level(struct level *lvl, const char *fname);
int save_level(struct level *lvl, const char *fname);
-struct tile *find_level_tile(struct level *lvl, const char *tname);
+struct tile *find_level_tile(struct level *lvl, int type);
int gen_cell_geom(struct level *lvl, struct cell *cell);
int gen_level_geom(struct level *lvl);
+int get_cell_type(struct level *lvl, int x, int y);
+
#endif /* LEVEL_H_ */