⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 r_defs.h

📁 The source code of Doom legacy for windows
💻 H
📖 第 1 页 / 共 2 页
字号:
// Emacs style mode select   -*- C++ -*-//-----------------------------------------------------------------------------//// $Id: r_defs.h,v 1.23 2001/04/30 17:19:24 stroggonmeth Exp $//// Copyright (C) 1993-1996 by id Software, Inc.// Portions Copyright (C) 1998-2000 by DooM Legacy Team.//// 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.////// $Log: r_defs.h,v $// Revision 1.23  2001/04/30 17:19:24  stroggonmeth// HW fix and misc. changes//// Revision 1.22  2001/03/30 17:12:51  bpereira// no message//// Revision 1.21  2001/03/21 18:24:39  stroggonmeth// Misc changes and fixes. Code cleanup//// Revision 1.20  2001/03/19 21:18:48  metzgermeister//   * missing textures in HW mode are replaced by default texture//   * fixed crash bug with P_SpawnMissile(.) returning NULL//   * deep water trick and other nasty thing work now in HW mode (tested with tnt/map02 eternal/map02)//   * added cvar gr_correcttricks//// Revision 1.19  2001/03/13 22:14:20  stroggonmeth// Long time no commit. 3D floors, FraggleScript, portals, ect.//// Revision 1.18  2001/02/28 17:50:55  bpereira// no message//// Revision 1.17  2001/01/25 22:15:44  bpereira// added heretic support//// Revision 1.16  2000/11/21 21:13:17  stroggonmeth// Optimised 3D floors and fixed crashing bug in high resolutions.//// Revision 1.15  2000/11/09 17:56:20  stroggonmeth// Hopefully fixed a few bugs and did a few optimizations.//// Revision 1.14  2000/11/02 17:50:09  stroggonmeth// Big 3Dfloors & FraggleScript commit!!//// Revision 1.13  2000/10/07 20:36:13  crashrl// Added deathmatch team-start-sectors via sector/line-tag and linedef-type 1000-1031//// Revision 1.12  2000/10/04 16:19:24  hurdler// Change all those "3dfx names" to more appropriate names//// Revision 1.11  2000/07/01 09:23:49  bpereira// no message//// Revision 1.10  2000/04/18 17:39:39  stroggonmeth// Bug fixes and performance tuning.//// Revision 1.9  2000/04/18 12:55:39  hurdler// join with Boris' code//// Revision 1.7  2000/04/15 22:12:58  stroggonmeth// Minor bug fixes//// Revision 1.6  2000/04/12 16:01:59  hurdler// ready for T&L code and true static lighting//// Revision 1.5  2000/04/11 19:07:25  stroggonmeth// Finished my logs, fixed a crashing bug.//// Revision 1.4  2000/04/06 20:47:08  hurdler// add Boris' changes for coronas in doom3.wad//// Revision 1.3  2000/04/04 00:32:47  stroggonmeth// Initial Boom compatability plus few misc changes all around.//// Revision 1.2  2000/02/27 00:42:10  hurdler// fix CR+LF problem//// Revision 1.1.1.1  2000/02/22 20:32:32  hurdler// Initial import into CVS (v1.29 pr3)////// DESCRIPTION://      Refresh/rendering module, shared data struct definitions.////-----------------------------------------------------------------------------#ifndef __R_DEFS__#define __R_DEFS__// Some more or less basic data types// we depend on.#include "m_fixed.h"// We rely on the thinker data struct// to handle sound origins in sectors.#include "d_think.h"// SECTORS do store MObjs anyway.#include "p_mobj.h"#include "screen.h"     //added:26-01-98:MAXVIDWIDTH, MAXVIDHEIGHT// Silhouette, needed for clipping Segs (mainly)// and sprites representing things.#define SIL_NONE                0#define SIL_BOTTOM              1#define SIL_TOP                 2#define SIL_BOTH                3//faB: was upped to 512, but still people come with levels that break the//     limits, so had to do an ugly re-alloc to get rid of the overflow.//#define MAXDRAWSEGS             256        // see r_segs.c for more// SoM: Moved this here...// This could be wider for >8 bit display.// Indeed, true color support is posibble//  precalculating 24bpp lightmap/colormap LUT.//  from darkening PLAYPAL to all black.// Could even us emore than 32 levels.typedef byte    lighttable_t;// SoM: ExtraColormap type. Use for extra_colormaps from now on.typedef struct{  unsigned short  maskcolor;  unsigned short  fadecolor;  double          maskamt;  unsigned short  fadestart, fadeend;  int             fog;  lighttable_t*   colormap;} extracolormap_t;//// INTERNAL MAP TYPES//  used by play and refresh////// Your plain vanilla vertex.// Note: transformed values not buffered locally,//  like some DOOM-alikes ("wt", "WebView") did.//typedef struct{    fixed_t     x;    fixed_t     y;} vertex_t;// Forward of LineDefs, for Sectors.struct line_s;// Each sector has a degenmobj_t in its center//  for sound origin purposes.// I suppose this does not handle sound from//  moving objects (doppler), because//  position is prolly just buffered, not//  updated.typedef struct{    thinker_t           thinker;        // not used for anything    fixed_t             x;    fixed_t             y;    fixed_t             z;} degenmobj_t;//SoM: 3/23/2000: Store fake planes in a resizalbe array insted of just by//heightsec. Allows for multiple fake planes.typedef enum{  FF_EXISTS            = 0x1,    //MAKE SURE IT'S VALID  FF_SOLID             = 0x2,    //Does it clip things?  FF_RENDERSIDES       = 0x4,    //Render the sides?  FF_RENDERPLANES      = 0x8,    //Render the floor/ceiling?  FF_RENDERALL         = 0xC,    //Render everything?  FF_SWIMMABLE         = 0x10,   //Can we swim?  FF_NOSHADE           = 0x20,   //Does it mess with the lighting?  FF_CUTSOLIDS         = 0x40,   //Does it cut out hidden solid pixles?  FF_CUTEXTRA          = 0x80,   //Does it cut out hidden translucent pixles?  FF_CUTLEVEL          = 0xC0,   //Does it cut out all hidden pixles?  FF_CUTSPRITES        = 0x100,  //Final Step in 3D water  FF_BOTHPLANES        = 0x200,  //Render both planes all the time?  FF_EXTRA             = 0x400,  //Does it get cut by FF_CUTEXTRAS?  FF_TRANSLUCENT       = 0x800,  //See through!  FF_FOG               = 0x1000, //Fog "brush"?  FF_INVERTPLANES      = 0x2000, //Reverse the plane visibility rules?  FF_ALLSIDES          = 0x4000, //Render inside and outside sides?  FF_INVERTSIDES       = 0x8000, //Only render inside sides?  FF_DOUBLESHADOW      = 0x10000,//Make two lightlist entries to reset light?} ffloortype_e;typedef struct ffloor_s{  fixed_t          *topheight;  short            *toppic;  short            *toplightlevel;  fixed_t          *topxoffs;  fixed_t          *topyoffs;  fixed_t          *bottomheight;  short            *bottompic;  short            *bottomlightlevel;  fixed_t          *bottomxoffs;  fixed_t          *bottomyoffs;  fixed_t          delta;  int              secnum;  ffloortype_e     flags;  struct line_s*   master;  struct sector_s* target;  struct ffloor_s* next;  struct ffloor_s* prev;  int              lastlight;} ffloor_t;// SoM: This struct holds information for shadows casted by 3D floors.// This information is contained inside the sector_t and is used as the base// information for casted shadows.typedef struct lightlist_s {  fixed_t                 height;  short                   lightlevel;  extracolormap_t*        extra_colormap;  ffloor_t*               caster;  } lightlist_t;// SoM: This struct is used for rendering walls with shadows casted on them...typedef struct r_lightlist_s {  fixed_t                 height;  fixed_t                 heightstep;  fixed_t                 botheight;  fixed_t                 botheightstep;  short                   lightlevel;  extracolormap_t*        extra_colormap;  lighttable_t*           rcolormap;  int                     flags;  } r_lightlist_t;////////////////////////////////////// PORTALS. Portals are controled// holes in a level that other parts// of levels are rendered into.// They can be used for sky boxes,// mirrors, teleporter "previews",// or even Quake 1 Style skies. :)////////////////////////////////////typedef struct{  fixed_t   viewx;  fixed_t   viewy;  fixed_t   viewz;  angle_t   angle;  fixed_t   newx, newy;  short   topclip[MAXVIDWIDTH];  short   botclip[MAXVIDWIDTH];} lvlportal_t;typedef enum{  PRTL_QUAKESKY,  PRTL_SKYBOX,  PRTL_MIRROR,  PRTL_PORTAL,} portaltype_e;typedef struct portal_s{  portaltype_e  type;  union  {    struct visplane_s*   plane;    lvlportal_t*  lvl;  } target;  fixed_t  alphaheight;  boolean  render;  // The "Masters" of this portal.  struct sector_s*  msector;  struct line_s*    mline;  struct portal_s*  parent;  struct portal_s*  child;  struct portal_s*  next;  struct portal_s*  prev;  // Linked list for portals linked to a line.  struct portal_s*  line_next;} portal_t;// SoM: I must insist that this is the best way to accomplish cutting into// walls. The portal_t structure is made for storing clipping ranges and is// a generic portal structure. This is a special case struct for wall portals.typedef struct wallportal_s{  fixed_t     *topheight;  fixed_t     *bottomheight;  short       *texnum; //Used as the texture below the portal;  fixed_t     top, bottom, topstep, bottomstep; // Used for rendering.  portal_t*   portal;  int         side;  struct line_s*    mline;  struct wallportal_s* next;  struct wallportal_s* prev;} wallportal_t;typedef enum {   FLOOR_SOLID,   FLOOR_WATER,     FLOOR_LAVA,      FLOOR_SLUDGE,    FLOOR_ICE,} floortype_t;// ----- for special tricks with HW renderer -----//// For creating a chain with the lines around a sector//typedef struct linechain_s{    struct line_s        *line;    struct linechain_s   *next;} linechain_t;// ----- end special tricks -----//// The SECTORS record, at runtime.// Stores things/mobjs.//typedef struct sector_s{    fixed_t     floorheight;    fixed_t     ceilingheight;    short       floorpic;    short       ceilingpic;    short       lightlevel;    short       special;    short       oldspecial;      //SoM: 3/6/2000: Remember if a sector was secret (for automap)    short       tag;    int nexttag,firsttag;        //SoM: 3/6/2000: by killough: improves searches for tags.    // 0 = untraversed, 1,2 = sndlines -1    short       soundtraversed;    short       floortype;  // see floortype_t beffor     // thing that made a sound (or null)    mobj_t*     soundtarget;    // mapblock bounding box for height changes    int         blockbox[4];    // origin for any sounds played by the sector    degenmobj_t soundorg;    // if == validcount, already checked    int         validcount;    // list of mobjs in sector    mobj_t*     thinglist;    //SoM: 3/6/2000: Start boom extra stuff    // thinker_t for reversable actions    void *floordata;    // make thinkers on    void *ceilingdata;  // floors, ceilings, lighting,    void *lightingdata; // independent of one another      // lockout machinery for stairbuilding    int stairlock;   // -2 on first locked -1 after thinker done 0 normally    int prevsec;     // -1 or number of sector for previous step    int nextsec;     // -1 or number of next step sector      // floor and ceiling texture offsets    fixed_t   floor_xoffs,   floor_yoffs;    fixed_t ceiling_xoffs, ceiling_yoffs;    int heightsec;    // other sector, or -1 if no other sector    int altheightsec; // Use old boom model? 1 for no 0 for yes.      int floorlightsec, ceilinglightsec;    int teamstartsec;    int bottommap, midmap, topmap; // dynamic colormaps      // list of mobjs that are at least partially in the sector    // thinglist is a subset of touching_thinglist    struct msecnode_s *touching_thinglist;               // phares 3/14/98      //SoM: 3/6/2000: end stuff...    int                 linecount;    struct line_s**     lines;  // [linecount] size    //SoM: 2/23/2000: Improved fake floor hack    ffloor_t*                  ffloors;    int                        *attached;    int                        numattached;    lightlist_t*               lightlist;    int                        numlights;    boolean                    moved;    int                        validsort; //if == validsort allready been sorted    boolean                    added;    // SoM: 4/3/2000: per-sector colormaps!    extracolormap_t*           extra_colormap;    // SoM: Skyboxes    portal_t*                  ceilingportal;    portal_t*                  floorportal;    // ----- for special tricks with HW renderer -----

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -