#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