#ifndef DOOMWADHDR #define DOOMWADHDR #include <stdio.h> #include <windows.h> #include "types.h" class GameWad { friend class Renderer; private: // // Private Data // int WadFileInitialized; char WadFileName[256]; FILE* WadFilePtr; long DirectoryOffset; long NumberOfLumps; short MaxNode; long NbrVertices; long NbrTextures; // // Game information // unsigned char GamePalettes[14][768]; char ColorMap[34][256]; Thing* Things; Vertex* Vertices; LineDef* Linedefs; Seg* Segs; Sector* Sectors; SSector* SSectors; SideDef* Sidedefs; Node* Nodes; PName* Pnames; Texture* Textures; short PlayerX; short PlayerY; short PlayerAngle; public: // // Public Methods. // GameWad( void ); GameWad( char* Fname ); ~GameWad( void ); int InitWadFile( char* Fname ); int LoadMap( int episode, int level ); void getPlayerStart( short& X, short& Y, short& Ang); char* getTexturePtr( const char* txtName, short& width, short& height ); char* getBSPTree( void ); RGBQUAD* getPalette( int paletteNbr ); private: // // Private Methods. // int clearMap(void); int loadPalettes( void ); int loadColorMaps( void ); int loadPNames( void ); int loadTextures( void ); int loadThings(long StartOffset, long NumItems); int loadLineDefs(long StartOffset, long NumItems); int loadSideDefs(long StartOffset, long NumItems); int loadVertexes(long StartOffset, long NumItems); int loadSegments(long StartOffset, long NumItems); int loadSSectors(long StartOffset, long NumItems); int loadNodes(long StartOffset, long NumItems); int loadSectors(long StartOffset, long NumItems); int findDirectoryEntry(const char* SearchName, long* LumpSize = NULL) ; char* ParseTextureData( const char* DirectoryName, long& Width, long& Height); int Save_Pcx(char *filename, unsigned char *Buffer, unsigned long width, unsigned long height); }; #endif