summaryrefslogtreecommitdiff
path: root/src/heretic/doomdata.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/heretic/doomdata.h')
-rw-r--r--src/heretic/doomdata.h195
1 files changed, 195 insertions, 0 deletions
diff --git a/src/heretic/doomdata.h b/src/heretic/doomdata.h
new file mode 100644
index 00000000..a6ce9465
--- /dev/null
+++ b/src/heretic/doomdata.h
@@ -0,0 +1,195 @@
+// DoomData.h
+
+// all external data is defined here
+// most of the data is loaded into different structures at run time
+
+#ifndef __DOOMDATA__
+#define __DOOMDATA__
+
+#ifndef __BYTEBOOL__
+#define __BYTEBOOL__
+typedef enum {false, true} boolean;
+typedef unsigned char byte;
+#endif
+
+/*
+===============================================================================
+
+ map level types
+
+===============================================================================
+*/
+
+// lump order in a map wad
+enum {ML_LABEL, ML_THINGS, ML_LINEDEFS, ML_SIDEDEFS, ML_VERTEXES, ML_SEGS,
+ML_SSECTORS, ML_NODES, ML_SECTORS , ML_REJECT, ML_BLOCKMAP};
+
+
+typedef struct
+{
+ short x,y;
+} mapvertex_t;
+
+typedef struct
+{
+ short textureoffset;
+ short rowoffset;
+ char toptexture[8], bottomtexture[8], midtexture[8];
+ short sector; // on viewer's side
+} mapsidedef_t;
+
+typedef struct
+{
+ short v1, v2;
+ short flags;
+ short special, tag;
+ short sidenum[2]; // sidenum[1] will be -1 if one sided
+} maplinedef_t;
+
+#define ML_BLOCKING 1
+#define ML_BLOCKMONSTERS 2
+#define ML_TWOSIDED 4 // backside will not be present at all
+ // if not two sided
+
+// if a texture is pegged, the texture will have the end exposed to air held
+// constant at the top or bottom of the texture (stairs or pulled down things)
+// and will move with a height change of one of the neighbor sectors
+// Unpegged textures allways have the first row of the texture at the top
+// pixel of the line for both top and bottom textures (windows)
+#define ML_DONTPEGTOP 8
+#define ML_DONTPEGBOTTOM 16
+
+#define ML_SECRET 32 // don't map as two sided: IT'S A SECRET!
+#define ML_SOUNDBLOCK 64 // don't let sound cross two of these
+#define ML_DONTDRAW 128 // don't draw on the automap
+#define ML_MAPPED 256 // set if allready drawn in automap
+
+
+typedef struct
+{
+ short floorheight, ceilingheight;
+ char floorpic[8], ceilingpic[8];
+ short lightlevel;
+ short special, tag;
+} mapsector_t;
+
+typedef struct
+{
+ short numsegs;
+ short firstseg; // segs are stored sequentially
+} mapsubsector_t;
+
+typedef struct
+{
+ short v1, v2;
+ short angle;
+ short linedef, side;
+ short offset;
+} mapseg_t;
+
+enum {BOXTOP,BOXBOTTOM,BOXLEFT,BOXRIGHT}; // bbox coordinates
+
+#define NF_SUBSECTOR 0x8000
+typedef struct
+{
+ short x,y,dx,dy; // partition line
+ short bbox[2][4]; // bounding box for each child
+ unsigned short children[2]; // if NF_SUBSECTOR its a subsector
+} mapnode_t;
+
+typedef struct
+{
+ short x,y;
+ short angle;
+ short type;
+ short options;
+} mapthing_t;
+
+#define MTF_EASY 1
+#define MTF_NORMAL 2
+#define MTF_HARD 4
+#define MTF_AMBUSH 8
+
+/*
+===============================================================================
+
+ texture definition
+
+===============================================================================
+*/
+
+typedef struct
+{
+ short originx;
+ short originy;
+ short patch;
+ short stepdir;
+ short colormap;
+} mappatch_t;
+
+typedef struct
+{
+ char name[8];
+ boolean masked;
+ short width;
+ short height;
+ void **columndirectory; // OBSOLETE
+ short patchcount;
+ mappatch_t patches[1];
+} maptexture_t;
+
+
+/*
+===============================================================================
+
+ graphics
+
+===============================================================================
+*/
+
+// posts are runs of non masked source pixels
+typedef struct
+{
+ byte topdelta; // -1 is the last post in a column
+ byte length;
+// length data bytes follows
+} post_t;
+
+// column_t is a list of 0 or more post_t, (byte)-1 terminated
+typedef post_t column_t;
+
+// a patch holds one or more columns
+// patches are used for sprites and all masked pictures
+typedef struct
+{
+ short width; // bounding box size
+ short height;
+ short leftoffset; // pixels to the left of origin
+ short topoffset; // pixels below the origin
+ int columnofs[8]; // only [width] used
+ // the [0] is &columnofs[width]
+} patch_t;
+
+// a pic is an unmasked block of pixels
+typedef struct
+{
+ byte width,height;
+ byte data;
+} pic_t;
+
+
+
+
+/*
+===============================================================================
+
+ status
+
+===============================================================================
+*/
+
+
+
+
+#endif // __DOOMDATA__
+