home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
D!Zone (Collector's Edition)
/
D_ZONE_CD.ISO
/
programs
/
editors
/
vnb1050
/
dmglobal.i
< prev
next >
Wrap
Text File
|
1994-05-25
|
7KB
|
208 lines
/******************************************************************************
INCLUDE: DMGLOBAL.I
WRITTEN BY: Robert Fenske, Jr. (rfenske@swri.edu)
Southwest Research Institute
Electromagnetics Division
6220 Culebra
San Antonio, Texas 78238-5166
CREATED: Mar. 1994
DESCRIPTION: This include file contains all the necessary constant,
macro, syntax, and type definitions as well as all
external and global variables needed for the various
DOOM-related utility programs.
DOOM is a trademark of id Software, Inc.
******************************************************************************/
#if !defined(DM_Globals)
#if defined(sun) && !defined(BSWAP) /* Suns need bytes swapped */
#define BSWAP 1
#endif
/*===========================================================================*/
#undef PI
#define PI (double)3.14159265358979323846 /* ubiquitous PI */
#define TWOPI (double)6.28318530717958647693
#define bams_to_deg (double)0.00549316406250000000 /* angle conv consts */
#define deg_to_bams (double)182.04444444444444444444
#define bams_to_rad (double)0.00009587379924285258
#define rad_to_bams (double)10430.37835047045272494957
#define deg_to_rad (double)0.01745329251994329577
#define rad_to_deg (double)57.29577951308232087680
#define BAMS180 ((bams)0x8000) /* BAMS: (-)180 degrees */
#define BAMS090 ((bams)0x4000) /* BAMS: 90 degrees */
#define FALSE 0
#define TRUE (!FALSE)
#define MAINS 0
#define THINGS 1
#define LINES 2
#define SIDES 3
#define VERTS 4
#define SEGS 5
#define SSECTS 6
#define NODES 7
#define SECTS 8
#define REJECTS 9
#define BLKMAPS 10
#define ALL 11
/*===========================================================================*/
#define abs(a) ((a) < 0 ? -(a) : (a))
#define min(a,b) ((a) < (b) ? (a) : (b))
#define max(a,b) ((a) < (b) ? (b) : (a))
#define numbytes(v) ((unsigned)sizeof(v))
#define numelm(a) (sizeof a / sizeof a[0])
#define sgn(a) ((0<(a))-((a)<0))
#if defined(BSWAP)
#define bswapw(v) ((unsigned short)((((v)>>8)&0xFF) | ((v)<<8)))
#define bswapl(v) ((unsigned long)((((v)>>24)&0x000000FFL) | \
(((v)>> 8)&0x0000FF00L) | \
(((v)<< 8)&0x00FF0000L) | \
( (v)<<24)))
#else
#define bswapw(v) (v)
#define bswapl(v) (v)
#endif
#if defined(__TURBOC__)
#define blockmem(t,n) (t huge*)farcalloc((unsigned)(n),sizeof(t))
#define blockfree(b) ((b)!=NULL?farfree((char huge*)(b)):0)
#else
#define blockmem(t,n) (t *)calloc((unsigned)(n),sizeof(t))
#define blockfree(b) ((b)!=NULL?free((char *)(b)):0)
#endif
#define Things ((DOOM_THING *)WInfo.data[WInfo.lvlndx+THINGS])
#define Lines ((DOOM_LINE *)WInfo.data[WInfo.lvlndx+LINES])
#define Sides ((DOOM_SIDE *)WInfo.data[WInfo.lvlndx+SIDES])
#define Verts ((DOOM_VERT *)WInfo.data[WInfo.lvlndx+VERTS])
#define Segs ((DOOM_SEGS *)WInfo.data[WInfo.lvlndx+SEGS])
#define Ssecs ((DOOM_SSECTOR *)WInfo.data[WInfo.lvlndx+SSECTS])
#define Nodes ((DOOM_NODE *)WInfo.data[WInfo.lvlndx+NODES])
#define Sects ((DOOM_SECTOR *)WInfo.data[WInfo.lvlndx+SECTS])
#define Rejects ((DOOM_REJECT *)WInfo.data[WInfo.lvlndx+REJECTS])
#define Blockmaps ((DOOM_BLOCKMAP *)WInfo.data[WInfo.lvlndx+BLKMAPS])
#define NThings WInfo.count[WInfo.lvlndx+THINGS]
#define NLines WInfo.count[WInfo.lvlndx+LINES]
#define NSides WInfo.count[WInfo.lvlndx+SIDES]
#define NVerts WInfo.count[WInfo.lvlndx+VERTS]
#define NSegs WInfo.count[WInfo.lvlndx+SEGS]
#define NSsecs WInfo.count[WInfo.lvlndx+SSECTS]
#define NNodes WInfo.count[WInfo.lvlndx+NODES]
#define NSects WInfo.count[WInfo.lvlndx+SECTS]
#define NRejects WInfo.count[WInfo.lvlndx+REJECTS]
#define NBlockmaps WInfo.count[WInfo.lvlndx+BLKMAPS]
/*===========================================================================*/
#define bcase break;case /* for a more reasonabble */
#define bdefault break;default /* switch statement */
#define global /* global declarations */
#define forward extern /* forward references */
#define local static /* local declarations */
#define otherwise break;default /* alternate default case */
#define repeat do
#define until(expr) while (!(expr)) /* for do ... until loops */
/*===========================================================================*/
typedef unsigned short ushort;
typedef unsigned int boolean; /* integer used as boolean */
typedef short word; /* 16-bit word */
typedef word bams; /* 16-bit bams */
/*===========================================================================*/
typedef struct DOOM_THING { /* thing information */
short x, y;
short angle;
short flag;
short item;
} DOOM_THING;
typedef struct DOOM_LINE { /* line information */
short fndx, tndx;
short flag, action_flag;
short sect_tag;
short rsidndx, lsidndx;
} DOOM_LINE;
typedef struct DOOM_SIDE { /* side information */
short image_xoff, image_yoff;
char lowwall[8], highwall[8], fullwall[8];
short sectndx;
} DOOM_SIDE;
typedef struct DOOM_VERT { /* vertex information */
short x, y;
} DOOM_VERT;
typedef struct DOOM_SEGS { /* segment information */
short fndx, tndx;
bams angle;
short lndx;
short sndx;
short loffset;
} DOOM_SEGS;
typedef struct DOOM_SSECTOR { /* subsector information */
short count;
short sndx;
} DOOM_SSECTOR;
typedef struct DOOM_NODE { /* node information */
short x, y;
short xdel, ydel;
short rymax, rymin, rxmin, rxmax;
short lymax, lymin, lxmin, lxmax;
short nndx[2];
} DOOM_NODE;
typedef struct DOOM_SECTOR { /* sector information */
short floor_ht, ceil_ht;
char floor_desc[8], ceil_desc[8];
short light_lvl;
short property;
short line_tag;
} DOOM_SECTOR;
typedef unsigned char DOOM_REJECT; /* reject information */
typedef short DOOM_BLOCKMAP; /* block map information */
typedef struct WAD_HEAD { /* WAD file header */
char ident[4];
long count;
long offset;
} WAD_HEAD;
typedef struct DIR_ENTRY { /* WAD file directory entry */
long offset;
long nbytes;
char name[8];
} DIR_ENTRY;
typedef struct WAD_INFO { /* WAD file information */
WAD_HEAD head; /* file header */
DIR_ENTRY *origdir, /* orig directory */
*dir; /* resources dirctry */
char **data; /* resources data */
boolean *changed; /* rsrce changed flg */
int *count; /* resources size */
int lvlndx; /* where a level is */
int ep, mp; /* cur episode/map */
double ver; /* patch version */
} WAD_INFO;
/*===========================================================================*/
extern WAD_INFO WInfo; /* WAD file information */
#define DM_Globals 1 /* now have defined these */
#endif