buildlib.cpp

Go to the documentation of this file.
00001 // buildlib.cpp : Defines the entry point for the console application.
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 // Usage: buildlib -grp duke3d.grp
00017 //
00018 // Options:
00019 // -g <filename> Specify Group File
00020 // -e <filename> Extract
00021 // -a <filename> Add File
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 //Test disk access
00033 //
00034 return TestDiskAccess();
00035 //
00036 
00037 //
00038 //Test Group Access
00039 //
00040 //return TestGroupAccess(argv);
00041 
00042 //
00043 // Test Group Save
00044 //
00045 /*
00046 GroupFile pGrpFile = GroupFile(argv[1]);
00047 if( pGrpFile.GetStatus() == 0)
00048 {
00049         return TestGroupSave(&pGrpFile, "TEST.GRP");
00050 }
00051 */
00052 
00053 
00054 //
00055 //Extract All
00056 //GroupFile* pGrpFile = new GroupFile(argv[1]);
00057 //if( pGrpFile->GetStatus() == 0)
00058 //{
00059         //ExtractAll(pGrpFile);
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                         //extract the file
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                                 //Print out some info on each file entry
00123                                 //printf("[%d] %s  Size: %d\n", i, sPrintableFilename, pFileEntry->fileheader.size);
00124 
00125 
00126                                 //
00127                                 // Test the .ART support
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                                         //print each tiles dims
00146                                         for(uint32 j = 0; j < _artfile->GetNumTiles(); j++)
00147                                         {
00148                                         printf("Tile [%d] X: %d  Y: %d\n", j, _artfile->GetTileSizeX(j), _artfile->GetTileSizeY(j));
00149                                         }
00150                                         */
00151 
00152 
00153                                         //if(_artfile)
00154                                         //delete _artfile;
00155                                 }
00156 
00157                                 //
00158                                 // Test the .MAP support
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                                         //if(_palette)
00195                                         //      delete _palette;
00196                                 }
00197 
00198                         }
00199 
00200                 }
00201                 /*
00202                 // Save Grp file
00203                 pGrpFile->SetFilename("test.grp");
00204                 pGrpFile->Save();
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         //Test loading art file from disk:
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         //printf("ArtFile: %s  Size: %d\n", "data\\TILES000.ART", pFileEntry->fileheader.size);
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                 //_artfile.~ArtFile();
00253                 return 1;
00254         }
00255 
00256         printf("------------------\n");
00257         printf("  MAP FILE TEST\n");
00258         printf("------------------\n");
00259         //printf("Map: %s  Size: %d\n", sPrintableFilename, pFileEntry->fileheader.size);
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         //delete _map;
00270 
00271         PaletteFile _palette("data\\PALETTE.DAT");
00272         if(_palette.GetStatus() == BL_ERROR)
00273         {
00274                 printf("Error opening Palette file!!\n");
00275                 //_artfile.~ArtFile();
00276                 return 1;
00277         }
00278 
00279         printf("---------------------\n");
00280         printf("  PALETTE FILE TEST\n");
00281         printf("---------------------\n");      
00282         //printf("Palette: %s  Size: %d\n", sPrintableFilename, pFileEntry->fileheader.size);                                           
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 }

Generated on Sat Jan 11 23:36:56 2003 for Build-Lib by doxygen1.2.18