00001
00002
00003
00004 #include "stdafx.h"
00005 #include <stdio.h>
00006 #include <memory.h>
00007 #include <string.h>
00008 #include "fileformatdefs.h"
00009 #include "groupfile.h"
00010 #include "mapfile.h"
00011 #include "artfile.h"
00012 #include "palettefile.h"
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 int ExtractAll(GroupFile *pGRP);
00024 int TestGroupAccess(char* argv[]);
00025 int TestGroupSave(GroupFile *pGRP, const char* sFilename);
00026 int TestDiskAccess();
00027
00028 int main(int argc, char* argv[])
00029 {
00030
00031
00032
00033
00034 return TestDiskAccess();
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063 return 0;
00064 }
00065
00066
00067 int ExtractAll(GroupFile *pGRP)
00068 {
00069
00070 uint32 nNumFiles = pGRP->GetNumFiles();
00071
00072 for(uint32 i = 0; i < nNumFiles; i++)
00073 {
00074 FILESTRUCT *pFileEntry = pGRP->GetFileEntry(i);
00075
00076 if(pFileEntry)
00077 {
00078
00079
00080 char sFilename[128];
00081 sprintf(sFilename, "data\\");
00082 strncat(sFilename, pFileEntry->fileheader.name, 12);
00083
00084 FILE* fp;
00085 fp = fopen(sFilename, "wb");
00086 if(fp != NULL)
00087 {
00088 fwrite(&pFileEntry->data[0], sizeof(char), pFileEntry->fileheader.size, fp);
00089 fflush(fp);
00090 fclose(fp);
00091 }
00092
00093 }
00094 }
00095
00096 return 0;
00097 }
00098
00099
00100 int TestGroupAccess(char* argv[])
00101 {
00102
00103 GroupFile* pGrpFile = new GroupFile(argv[1]);
00104 if( pGrpFile->GetStatus() == 0)
00105 {
00106 printf("GRP Filename: %s\n", pGrpFile->GetFileName());
00107 printf("Number of files in this archive: %d\n", pGrpFile->GetNumFiles());
00108 uint32 nNumFiles = pGrpFile->GetNumFiles();
00109
00110 for(uint32 i = 0; i < nNumFiles; i++)
00111 {
00112
00113 FILESTRUCT *pFileEntry = pGrpFile->GetFileEntry(i);
00114
00115 if(pFileEntry)
00116 {
00117 char sPrintableFilename[13];
00118 memset(sPrintableFilename, 0, 12);
00119 strncpy(sPrintableFilename, pFileEntry->fileheader.name, 12);
00120 sPrintableFilename[12] = '\0';
00121
00122
00123
00124
00125
00126
00127
00128
00129 if( strcmp("TILES000.ART", sPrintableFilename) == 0)
00130 {
00131 ArtFile _artfile(pFileEntry);
00132
00133 printf("\n------------------\n");
00134 printf(" ART FILE TEST\n");
00135 printf("------------------\n");
00136 printf("ArtFile: %s Size: %d\n", sPrintableFilename, pFileEntry->fileheader.size);
00137 printf("Version: %d \n", _artfile.GetVersion());
00138 printf("NumTiles: %d\n", _artfile.GetNumTiles());
00139 printf("TileStart: %d\n", _artfile.GetTileStart());
00140 printf("TileEnd: %d\n", _artfile.GetTileEnd());
00141
00142 printf("\n");
00143
00144
00145
00146
00147
00148
00149
00150
00151
00152
00153
00154
00155 }
00156
00157
00158
00159
00160 if( strcmp("E1L8.MAP", pFileEntry->fileheader.name) == 0)
00161 {
00162
00163 MapFile *_map = new MapFile(pFileEntry);
00164
00165 printf("------------------\n");
00166 printf(" MAP FILE TEST\n");
00167 printf("------------------\n");
00168 printf("Map: %s Size: %d\n", sPrintableFilename, pFileEntry->fileheader.size);
00169 printf("Version: %d\n", _map->GetVersion());
00170 Pos pos = _map->GetStartPosition();
00171 printf("Start position: %d %d %d\n", pos.x, pos.y, pos.z);
00172 printf("Start Angle: %d\n", _map->GetStartAngle());
00173 printf("Startpoint Sector: %d\n", _map->GetStartSectorNum());
00174 printf("Sectors: %d\n", _map->GetNumSectors());
00175 printf("Walls: %d\n", _map->GetNumWalls());
00176 printf("Sprites: %d\n", _map->GetNumSprites());
00177
00178 delete _map;
00179
00180 }
00181
00182
00183 if( strcmp("PALETTE.DAT", pFileEntry->fileheader.name) == 0)
00184 {
00185
00186 PaletteFile _palette(pFileEntry);
00187
00188 printf("---------------------\n");
00189 printf(" PALETTE FILE TEST\n");
00190 printf("---------------------\n");
00191 printf("Palette: %s Size: %d\n", sPrintableFilename, pFileEntry->fileheader.size);
00192 printf("Number of palette lookups: : %d\n", _palette.GetNumPalLookups());
00193
00194
00195
00196 }
00197
00198 }
00199
00200 }
00201
00202
00203
00204
00205
00206 }
00207
00208 if(pGrpFile)
00209 {
00210 delete pGrpFile;
00211 }
00212
00213 return 0;
00214 }
00215
00216 int TestGroupSave(GroupFile *pGRP, const char* sFilename)
00217 {
00218 pGRP->SetFilename(sFilename);
00219 return pGRP->Save();
00220 }
00221
00222 int TestDiskAccess()
00223 {
00224
00225
00226 ArtFile _artfile("data\\TILES000.ART");
00227 if(_artfile.GetStatus() == BL_ERROR)
00228 {
00229 printf("Error opening Art file!!\n");
00230 _artfile.~ArtFile();
00231 return 1;
00232 }
00233
00234
00235 printf("\n------------------\n");
00236 printf(" ART FILE TEST\n");
00237 printf("------------------\n");
00238
00239 printf("Version: %d \n", _artfile.GetVersion());
00240 printf("NumTiles: %d\n", _artfile.GetNumTiles());
00241 printf("TileStart: %d\n", _artfile.GetTileStart());
00242 printf("TileEnd: %d\n", _artfile.GetTileEnd());
00243
00244 printf("\n\n");
00245
00246
00247
00248 MapFile _map("data\\E1L8.MAP");
00249 if(_map.GetStatus() == BL_ERROR)
00250 {
00251 printf("Error opening Map file!!\n");
00252
00253 return 1;
00254 }
00255
00256 printf("------------------\n");
00257 printf(" MAP FILE TEST\n");
00258 printf("------------------\n");
00259
00260 printf("Version: %d\n", _map.GetVersion());
00261 Pos pos = _map.GetStartPosition();
00262 printf("Start position: %d %d %d\n", pos.x, pos.y, pos.z);
00263 printf("Start Angle: %d\n", _map.GetStartAngle());
00264 printf("Startpoint Sector: %d\n", _map.GetStartSectorNum());
00265 printf("Sectors: %d\n", _map.GetNumSectors());
00266 printf("Walls: %d\n", _map.GetNumWalls());
00267 printf("Sprites: %d\n\n\n", _map.GetNumSprites());
00268
00269
00270
00271 PaletteFile _palette("data\\PALETTE.DAT");
00272 if(_palette.GetStatus() == BL_ERROR)
00273 {
00274 printf("Error opening Palette file!!\n");
00275
00276 return 1;
00277 }
00278
00279 printf("---------------------\n");
00280 printf(" PALETTE FILE TEST\n");
00281 printf("---------------------\n");
00282
00283 printf("Number of palette lookups: %d\n", _palette.GetNumPalLookups());
00284
00285 PALETTESTRUCT* pPal = _palette.GetDataHandle();
00286 pPal->numpalookups = 123;
00287 printf("Number of palette lookups: %d\n", _palette.GetNumPalLookups());
00288
00289 return 0;
00290 }