diff options
Diffstat (limited to 'src/heretic/doomdata.h')
-rw-r--r-- | src/heretic/doomdata.h | 189 |
1 files changed, 189 insertions, 0 deletions
diff --git a/src/heretic/doomdata.h b/src/heretic/doomdata.h new file mode 100644 index 00000000..b55daae4 --- /dev/null +++ b/src/heretic/doomdata.h @@ -0,0 +1,189 @@ +// Emacs style mode select -*- C++ -*- +//----------------------------------------------------------------------------- +// +// Copyright(C) 1993-1996 Id Software, Inc. +// Copyright(C) 1993-2008 Raven Software +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +// 02111-1307, USA. +// +//----------------------------------------------------------------------------- +// DoomData.h + +// all external data is defined here +// most of the data is loaded into different structures at run time + +#ifndef __DOOMDATA__ +#define __DOOMDATA__ + +#include "doomtype.h" + +/* +=============================================================================== + + 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; + +#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 + +=============================================================================== +*/ + +// a pic is an unmasked block of pixels +typedef struct +{ + byte width, height; + byte data; +} pic_t; + + + + +/* +=============================================================================== + + status + +=============================================================================== +*/ + + + + +#endif // __DOOMDATA__ |