visibility determination
[vrlugburz] / src / level.h
index dd1c988..a5a2ae6 100644 (file)
@@ -2,14 +2,19 @@
 #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 {
@@ -21,15 +26,20 @@ 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;
 
@@ -44,12 +54,14 @@ struct level {
        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;
 };
 
 
@@ -64,4 +76,6 @@ 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_ */