ref: 677f65df02d856f72640a5cb4886342f5f565b1f
dir: /doomdata.h/
// DoomData.h /* all external data is defined here * most of the data is loaded into different structures at run time */ #ifndef __DOOMDATA__ #define __DOOMDATA__ /* ---- 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 }; #pragma pack on 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; /* bbox coordinates */ enum { BOXTOP, BOXBOTTOM, BOXLEFT, BOXRIGHT }; #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; int32_t 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; #pragma pack off #endif /* __DOOMDATA__ */