#ifndef DOOMBASICTYPES
#define DOOMBASICTYPES
#include <stdio.h>
#define ANGLE_360 0x10000
#define ANGLE_315 0x0E000
#define ANGLE_270 0x0C000
#define ANGLE_225 0x0A000
#define ANGLE_180 0x08000
#define ANGLE_135 0x06000
#define ANGLE_90 0x04000
#define ANGLE_45 0x02000
typedef struct PCX_HEADER_TYPE
{
char manufacturer; // We don't care about these...
char version;
char encoding;
char bits_per_pixel; // We want an 8 here...
short x,y; // We ignore these.
short width,height; // Will be either 64x64 or 320x200
short horiz_rez; // Forget about these...
short vert_rez;
char EGA_palette[48]; // We won't even touch this.
char reserved;
char Num_Planes; // We want 1
short bytes_per_line; // Either 64 or 320
short palette_type; // We can forget about these too..
char padding[58];
} PCX_HEADER;
struct Thing
{
short StartX;
short StartY;
short StartAngle;
short ThingType;
short ThingOptions;
};
struct WadHdrLoad
{
char Type[4];
long NbrLumps;
long DirectoryOffset;
};
struct DirectoryEntryLoad
{
long LumpStartOffset;
long LumpSize;
char LumpName[8];
};
struct LineDef
{
short StartVertex;
short EndVertex;
short Attributes;
short SpecialEffect;
short EffectTagNumber;
short RightSideDef;
short LeftSideDef;
};
struct SideDef
{
short TxtureXOffset;
short TxtureYOffset;
char UpperTxtName[8];
char LowerTxtName[8];
char NormalTxtName[8];
short SectorNumber;
};
struct Vertex
{
short x;
short y;
};
struct Seg
{
short StartVertex;
short EndVertex;
short Angle;
short Linedef;
short Direction;
short StartOffset;
};
struct SegNode
{
short StartVertex;
short EndVertex;
short Angle;
short Linedef;
short Direction;
short StartOffset;
SideDef Sides[2];
};
struct SSector
{
short NumSegs;
short StartSeg;
};
struct SSectorNode
{
short NumSegs;
short StartSeg;
short Sector;
short FloorHeight;
short CeilingHeight;
char* FloorTxt;
char* CeilTxt;
short LightLevel;
Thing *things;
};
struct Sector
{
short FloorHeight;
short CeilingHeight;
char FloorTxtName[8];
char CeilTxtName[8];
short LightLevel;
short SpecialFlags;
short EffectTagNumber;
};
struct Node
{
short CutPlaneStartX;
short CutPlaneStartY;
short CutPlaneDx;
short CutPlaneDy;
short RightBBUpperY;
short RightBBLowerY;
short RightBBLowerX;
short RightBBUpperX;
short LeftBBUpperY;
short LeftBBLowerY;
short LeftBBLowerX;
short LeftBBUpperX;
short RightChild;
short LeftChild;
};
struct TextureLdrRec
{
char TxtName[8];
short pad1, pad2;
short TxtWidth;
short TxtHeight;
short pad3, pad4;
short NumPatches;
};
struct PatchDscr
{
short StartX;
short StartY;
short PnameNbr;
short StepDir;
short ColorMap;
};
struct PName
{
int index;
char Name[9];
};
struct Texture
{
char TxtName[9];
short TxtWidth;
short TxtHeight;
char* TxtPtr;
Texture( void) { TxtPtr = NULL; };
~Texture( void ) { if(NULL != TxtPtr) delete TxtPtr; };
};
struct PatchLdrRec
{
short Width;
short Height;
short XOffset;
short YOffset;
};
#endif