diff options
Diffstat (limited to 'src/heretic/doomdata.h')
-rw-r--r-- | src/heretic/doomdata.h | 195 |
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__ + |