#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