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

📄 build.h

📁 小型游戏引擎
💻 H
字号:
/* * "Build Engine & Tools" Copyright (c) 1993-1997 Ken Silverman * Ken Silverman's official web site: "http://www.advsys.net/ken" * See the included license file "BUILDLIC.TXT" for license info. * This file has been modified from Ken Silverman's original release */#ifndef _INCLUDE_BUILD_H_#define _INCLUDE_BUILD_H_#define MAXSECTORS 1024#define MAXWALLS 8192#define MAXSPRITES 4096#define MAXTILES 9216#define MAXSTATUS 1024#define MAXPLAYERS 16#define MAXXDIM 1600#define MAXYDIM 1200#define MAXPALOOKUPS 256#define MAXPSKYTILES 256#define MAXSPRITESONSCREEN 1024#define CLIPMASK0 (((1L)<<16)+1L)#define CLIPMASK1 (((256L)<<16)+64L)	/*     * Make all variables in BUILD.H defined in the ENGINE,	 *  and externed in GAME     * (dear lord.  --ryan.)     */#ifdef ENGINE	#define EXTERN#else	#define EXTERN extern#endif#ifdef PLATFORM_DOS#pragma pack(push,1);#else#pragma pack(1)#endif/* * ceilingstat/floorstat: *   bit 0: 1 = parallaxing, 0 = not                                 "P" *   bit 1: 1 = groudraw, 0 = not *   bit 2: 1 = swap x&y, 0 = not                                    "F" *   bit 3: 1 = double smooshiness                                   "E" *   bit 4: 1 = x-flip                                               "F" *   bit 5: 1 = y-flip                                               "F" *   bit 6: 1 = Align texture to first wall of sector                "R" *   bits 7-8:                                                       "T" *          00 = normal floors *          01 = masked floors *          10 = transluscent masked floors *          11 = reverse transluscent masked floors *   bits 9-15: reserved */	/* 40 bytes */typedef struct{	short wallptr, wallnum;	long ceilingz, floorz;	short ceilingstat, floorstat;	short ceilingpicnum, ceilingheinum;	signed char ceilingshade;	unsigned char ceilingpal, ceilingxpanning, ceilingypanning;	short floorpicnum, floorheinum;	signed char floorshade;	unsigned char floorpal, floorxpanning, floorypanning;	unsigned char visibility, filler;	short lotag, hitag, extra;} sectortype;/* * cstat: *   bit 0: 1 = Blocking wall (use with clipmove, getzrange)         "B" *   bit 1: 1 = bottoms of invisible walls swapped, 0 = not          "2" *   bit 2: 1 = align picture on bottom (for doors), 0 = top         "O" *   bit 3: 1 = x-flipped, 0 = normal                                "F" *   bit 4: 1 = masking wall, 0 = not                                "M" *   bit 5: 1 = 1-way wall, 0 = not                                  "1" *   bit 6: 1 = Blocking wall (use with hitscan / cliptype 1)        "H" *   bit 7: 1 = Transluscence, 0 = not                               "T" *   bit 8: 1 = y-flipped, 0 = normal                                "F" *   bit 9: 1 = Transluscence reversing, 0 = normal                  "T" *   bits 10-15: reserved */	/* 32 bytes */typedef struct{	long x, y;	short point2, nextwall, nextsector, cstat;	short picnum, overpicnum;	signed char shade;	char pal, xrepeat, yrepeat, xpanning, ypanning;	short lotag, hitag, extra;} walltype;/* * cstat: *   bit 0: 1 = Blocking sprite (use with clipmove, getzrange)       "B" *   bit 1: 1 = transluscence, 0 = normal                            "T" *   bit 2: 1 = x-flipped, 0 = normal                                "F" *   bit 3: 1 = y-flipped, 0 = normal                                "F" *   bits 5-4: 00 = FACE sprite (default)                            "R" *             01 = WALL sprite (like masked walls) *             10 = FLOOR sprite (parallel to ceilings&floors) *   bit 6: 1 = 1-sided sprite, 0 = normal                           "1" *   bit 7: 1 = Real centered centering, 0 = foot center             "C" *   bit 8: 1 = Blocking sprite (use with hitscan / cliptype 1)      "H" *   bit 9: 1 = Transluscence reversing, 0 = normal                  "T" *   bits 10-14: reserved *   bit 15: 1 = Invisible sprite, 0 = not invisible */	/* 44 bytes */typedef struct{	long x, y, z;	short cstat, picnum;	signed char shade;	unsigned char pal, clipdist, filler;	unsigned char xrepeat, yrepeat;	signed char xoffset, yoffset;	short sectnum, statnum;	short ang, owner, xvel, yvel, zvel;	short lotag, hitag, extra;} spritetype;#ifdef PLATFORM_DOS#pragma pack(pop);#else#pragma pack()#endifEXTERN sectortype sector[MAXSECTORS];EXTERN walltype wall[MAXWALLS];EXTERN spritetype sprite[MAXSPRITES];EXTERN long spritesortcnt;EXTERN spritetype tsprite[MAXSPRITESONSCREEN];EXTERN char vidoption;EXTERN long xdim, ydim, ylookup[MAXYDIM+1], numpages;EXTERN long yxaspect, viewingrange;EXTERN long validmodecnt;EXTERN short validmode[256];EXTERN long validmodexdim[256], validmodeydim[256];EXTERN short numsectors, numwalls;EXTERN volatile long totalclock;EXTERN long numframes, randomseed;EXTERN short sintable[2048];EXTERN unsigned char palette[768];EXTERN short numpalookups;EXTERN char *palookup[MAXPALOOKUPS];EXTERN char parallaxtype, showinvisibility;EXTERN long parallaxyoffs, parallaxyscale;EXTERN long visibility, parallaxvisibility;EXTERN long windowx1, windowy1, windowx2, windowy2;EXTERN short startumost[MAXXDIM], startdmost[MAXXDIM];EXTERN short pskyoff[MAXPSKYTILES], pskybits;EXTERN short headspritesect[MAXSECTORS+1], headspritestat[MAXSTATUS+1];EXTERN short prevspritesect[MAXSPRITES], prevspritestat[MAXSPRITES];EXTERN short nextspritesect[MAXSPRITES], nextspritestat[MAXSPRITES];EXTERN short tilesizx[MAXTILES], tilesizy[MAXTILES];EXTERN char walock[MAXTILES];EXTERN long numtiles, picanm[MAXTILES], waloff[MAXTILES];    /*	 * These variables are for auto-mapping with the draw2dscreen function.	 * When you load a new board, these bits are all set to 0 - since	 * you haven't mapped out anything yet.  Note that these arrays are	 * bit-mapped.	 * If you want draw2dscreen() to show sprite #54 then you say:	 *    spritenum = 54;	 *    show2dsprite[spritenum>>3] |= (1<<(spritenum&7));	 * And if you want draw2dscreen() to not show sprite #54 then you say:	 *    spritenum = 54;	 *    show2dsprite[spritenum>>3] &= ~(1<<(spritenum&7));	 * Automapping defaults to 0 (do nothing).  If you set automapping to 1,	 *    then in 3D mode, the walls and sprites that you see will show up the	 *    next time you flip to 2D mode.     */EXTERN char show2dsector[(MAXSECTORS+7)>>3];EXTERN char show2dwall[(MAXWALLS+7)>>3];EXTERN char show2dsprite[(MAXSPRITES+7)>>3];EXTERN char automapping;EXTERN char gotpic[(MAXTILES+7)>>3];EXTERN char gotsector[(MAXSECTORS+7)>>3];/*************************************************************************POSITION VARIABLES:		POSX is your x - position ranging from 0 to 65535		POSY is your y - position ranging from 0 to 65535			(the length of a side of the grid in EDITBORD would be 1024)		POSZ is your z - position (height) ranging from 0 to 65535, 0 highest.		ANG is your angle ranging from 0 to 2047.  Instead of 360 degrees, or			 2 * PI radians, I use 2048 different angles, so 90 degrees would			 be 512 in my system.SPRITE VARIABLES:	EXTERN short headspritesect[MAXSECTORS+1], headspritestat[MAXSTATUS+1];	EXTERN short prevspritesect[MAXSPRITES], prevspritestat[MAXSPRITES];	EXTERN short nextspritesect[MAXSPRITES], nextspritestat[MAXSPRITES];	Example: if the linked lists look like the following:		 谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目		 

⌨️ 快捷键说明

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