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

📄 r_defs.h

📁 PIXIL is a small footprint operating environment, complete with PDA PIM applications, a browser and
💻 H
字号:
// Emacs style mode select   -*- C++ -*- //-----------------------------------------------------------------------------//// $Id: r_defs.h,v 1.2 2003/09/08 22:34:31 jasonk Exp $//// Copyright (C) 1993-1996 by id Software, Inc.//// This source is available for distribution and/or modification// only under the terms of the DOOM Source Code License as// published by id Software. All rights reserved.//// The source is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License// for more details.//// DESCRIPTION://      Refresh/rendering module, shared data struct definitions.////-----------------------------------------------------------------------------#ifndef __R_DEFS__#define __R_DEFS__// Screenwidth.#include "doomdef.h"// 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"#ifdef __GNUG__#pragma interface#endif// 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#define MAXDRAWSEGS		256//// 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;//// The SECTORS record, at runtime.// Stores things/mobjs.//typedef	struct{    fixed_t	floorheight;    fixed_t	ceilingheight;    short	floorpic;    short	ceilingpic;    short	lightlevel;    short	special;    short	tag;    // 0 = untraversed, 1,2 = sndlines -1    int		soundtraversed;    // 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;    // thinker_t for reversable actions    void*	specialdata;    int			linecount;    struct line_s**	lines;	// [linecount] size    } sector_t;//// The SideDef.//typedef struct{    // add this to the calculated texture column    fixed_t	textureoffset;        // add this to the calculated texture top    fixed_t	rowoffset;    // Texture indices.    // We do not maintain names here.     short	toptexture;    short	bottomtexture;    short	midtexture;    // Sector the SideDef is facing.    sector_t*	sector;    } side_t;//// Move clipping aid for LineDefs.//typedef enum{    ST_HORIZONTAL,    ST_VERTICAL,    ST_POSITIVE,    ST_NEGATIVE} slopetype_t;typedef struct line_s{    // Vertices, from v1 to v2.    vertex_t*	v1;    vertex_t*	v2;    // Precalculated v2 - v1 for side checking.    fixed_t	dx;    fixed_t	dy;    // Animation related.    short	flags;    short	special;    short	tag;    // Visual appearance: SideDefs.    //  sidenum[1] will be -1 if one sided    short	sidenum[2];			    // Neat. Another bounding box, for the extent    //  of the LineDef.    fixed_t	bbox[4];    // To aid move clipping.    slopetype_t	slopetype;    // Front and back sector.    // Note: redundant? Can be retrieved from SideDefs.    sector_t*	frontsector;    sector_t*	backsector;    // if == validcount, already checked    int		validcount;    // thinker_t for reversable actions    void*	specialdata;		} line_t;//// A SubSector.// References a Sector.// Basically, this is a list of LineSegs,//  indicating the visible walls that define//  (all or some) sides of a convex BSP leaf.//typedef struct subsector_s{    sector_t*	sector;    short	numlines;    short	firstline;    } subsector_t;//// The LineSeg.//typedef struct{    vertex_t*	v1;    vertex_t*	v2;        fixed_t	offset;    angle_t	angle;    side_t*	sidedef;    line_t*	linedef;    // Sector references.    // Could be retrieved from linedef, too.    // backsector is NULL for one sided lines    sector_t*	frontsector;    sector_t*	backsector;    } seg_t;//// BSP node.//typedef struct{    // Partition line.    fixed_t	x;    fixed_t	y;    fixed_t	dx;    fixed_t	dy;    // Bounding box for each child.    fixed_t	bbox[2][4];    // If NF_SUBSECTOR its a subsector.    unsigned short children[2];    } node_t;// posts are runs of non masked source pixelstypedef 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 terminatedtypedef post_t	column_t;// PC direct to screen pointers//B UNUSED - keep till detailshift in r_draw.c resolved//extern byte*	destview;//extern byte*	destscreen;//// OTHER TYPES//// 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;	//// ?//typedef struct drawseg_s{    seg_t*		curline;    int			x1;    int			x2;    fixed_t		scale1;    fixed_t		scale2;    fixed_t		scalestep;    // 0=none, 1=bottom, 2=top, 3=both    int			silhouette;    // do not clip sprites above this    fixed_t		bsilheight;    // do not clip sprites below this    fixed_t		tsilheight;        // Pointers to lists for sprite clipping,    //  all three adjusted so [x1] is first value.    short*		sprtopclip;		    short*		sprbottomclip;	    short*		maskedtexturecol;    } drawseg_t;// Patches.// A patch holds one or more columns.// Patches are used for sprites and all masked pictures,// and we compose textures from the TEXTURE1/2 lists// of patches.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 vissprite_t is a thing//  that will be drawn during a refresh.// I.e. a sprite object that is partly visible.typedef struct vissprite_s{    // Doubly linked list.    struct vissprite_s*	prev;    struct vissprite_s*	next;        int			x1;    int			x2;    // for line side calculation    fixed_t		gx;    fixed_t		gy;		    // global bottom / top for silhouette clipping    fixed_t		gz;    fixed_t		gzt;    // horizontal position of x1    fixed_t		startfrac;        fixed_t		scale;        // negative if flipped    fixed_t		xiscale;	    fixed_t		texturemid;    int			patch;    // for color translation and shadow draw,    //  maxbright frames as well    lighttable_t*	colormap;       int			mobjflags;    } vissprite_t;//	// Sprites are patches with a special naming convention//  so they can be recognized by R_InitSprites.// The base name is NNNNFx or NNNNFxFx, with//  x indicating the rotation, x = 0, 1-7.// The sprite and frame specified by a thing_t//  is range checked at run time.// A sprite is a patch_t that is assumed to represent//  a three dimensional object and may have multiple//  rotations pre drawn.// Horizontal flipping is used to save space,//  thus NNNNF2F5 defines a mirrored patch.// Some sprites will only have one picture used// for all views: NNNNF0//typedef struct{    // If false use 0 for any position.    // Note: as eight entries are available,    //  we might as well insert the same name eight times.    boolean	rotate;    // Lump to use for view angles 0-7.    short	lump[8];    // Flip bit (1 = flip) to use for view angles 0-7.    byte	flip[8];    } spriteframe_t;//// A sprite definition://  a number of animation frames.//typedef struct{    int			numframes;    spriteframe_t*	spriteframes;} spritedef_t;//// Now what is a visplane, anyway?// typedef struct{  fixed_t		height;  int			picnum;  int			lightlevel;  int			minx;  int			maxx;    // leave pads for [minx-1]/[maxx+1]    byte		pad1;  // Here lies the rub for all  //  dynamic resize/change of resolution.  byte		top[SCREENWIDTH];  byte		pad2;  byte		pad3;  // See above.  byte		bottom[SCREENWIDTH];  byte		pad4;} visplane_t;#endif//-----------------------------------------------------------------------------//// $Log: r_defs.h,v $// Revision 1.2  2003/09/08 22:34:31  jasonk// Updated files because this fucker won't build for no fucking good reason.//// Revision 1.1.1.1  2003/09/04 21:08:13  jasonk// Initial import//// Revision 1.1  2000/12/08 21:07:54  jeffw// nxdoom initial entry -- No nxdoom/Makefile so it won't build automatically//////-----------------------------------------------------------------------------

⌨️ 快捷键说明

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