/*=========================================================================== * * TextTest.CPP - Dave Humphrey (uesp@m0use.net), 2 November 2000 * *=========================================================================*/ /* Includes */ #include "dftexture.h" #include "io.h" #include "pcx.h" #include "dfcif.h" #include "dfcommon.h" long U1Count = 0; long U2Count = 0; long U3Count = 0; long ImageCount = 0; int ReadFailedCount = 0; CPCXImage PCXImage; /*=========================================================================== * * Function - void CheckOffsets (pDFTexture); * *=========================================================================*/ void CheckOffsets (CDFTexture* pDFTexture) { int LoopCounter; dftexture_offset_t* pOffset; for (LoopCounter = 0; LoopCounter < pDFTexture->GetNumImages(); LoopCounter++) { pOffset = pDFTexture->GetOffsetData(LoopCounter); if (pOffset == NULL) continue; if (pOffset->Unknown1 != 0) { U1Count++; //SystemLog.Printf ("U1 = 0x%08lX", pOffset->Unknown1); } if (pOffset->NullValue1 != 0) U2Count++; if (pOffset->NullValue2 != 0) U3Count++; ImageCount += pDFTexture->GetNumSubImages(LoopCounter); } } /*=========================================================================== * End of Function CheckOffsets(); *=========================================================================*/ /*=========================================================================== * * Function - void LoadAllTextures (char* pFileSpec); * * Attempts to load all textures in the Arena2 directory. * *=========================================================================*/ void LoadAllTextures (char* pFileSpec) { _finddata_t FindData; char Buffer[256]; CDFTexture DFTexture; long FindHandle; int Result; boolean bResult; int FileCount = 0; int LoopCounter; int SubCounter; int MaxImages = 0; int MinImages = 10000; /* Setup parameters */ QuietLogOutput = TRUE; chdir("f:\\dagger\\arena2"); /* Find the first texture */ FindHandle = _findfirst(pFileSpec, &FindData); if (FindHandle == -1) { SystemLog.Printf(stdout, "No texture files found!\n"); return; } /* Find all matching files */ do { SystemLog.Printf ("Texture '%s' (0x%lX bytes)", FindData.name, FindData.size); printf ("%s...", FindData.name); FileCount++; bResult = DFTexture.Load(FindData.name); printf ("%s\n", bResult ? "Loaded." : "Failed!"); if (bResult) { //DFTexture.Dump(SystemLog.GetFileHandle(), DFTEXTURE_DM_TEXTUREINFO | DFTEXTURE_DM_IMAGE | DFTEXTURE_DM_IMAGEUNKNOWNS | DFTEXTURE_DM_OFFSETLIST | DFTEXTURE_DM_IMAGEHEADER); CheckOffsets(&DFTexture); sprintf(Buffer, "d:\\dfpcx\\%03.3s", FindData.name+8); mkdir(Buffer); //* for (LoopCounter = 0; LoopCounter < DFTexture.GetNumImages(); LoopCounter++) { for (SubCounter = 0; SubCounter < DFTexture.GetNumSubImages(LoopCounter); SubCounter++) { sprintf(Buffer, "d:\\dfpcx\\%03.3s\\%02d_%02d.pcx", FindData.name+8, LoopCounter, SubCounter); PCXImage.ExportLBM(Buffer, DFTexture.GetWidth(LoopCounter, SubCounter), DFTexture.GetHeight(LoopCounter, SubCounter), DFTexture.GetImageData(LoopCounter, SubCounter)); } } //*/ } else { //DFTexture.Dump(SystemLog.GetFileHandle(), DFTEXTURE_DM_TEXTUREINFO | DFTEXTURE_DM_IMAGE | DFTEXTURE_DM_IMAGEUNKNOWNS | DFTEXTURE_DM_OFFSETLIST | DFTEXTURE_DM_IMAGEHEADER); ReadFailedCount++; SystemLog.Printf ("\tFailed to load texture!"); } /* Find the next texture */ Result = _findnext(FindHandle, &FindData); } while (Result == 0); /* Close the find files handle */ _findclose(FindHandle); SystemLog.Printf (stdout, "NumFiles = %d (%d Read Failed)\n", FileCount, ReadFailedCount); SystemLog.Printf (stdout, "NumImages = %d / %d / %d\n", MinImages, MaxImages, ImageCount); SystemLog.Printf (stdout, "U1Count = %ld\n", U1Count); SystemLog.Printf (stdout, "U2Count = %ld\n", U2Count); SystemLog.Printf (stdout, "U3Count = %ld\n", U3Count); } /*=========================================================================== * End of Function LoadAllTextures() *=========================================================================*/ /*=========================================================================== * * Function - void LoadAllCifs (char* pFileSpec); * * Attempts to load all cifs from the Arena2 directory. * *=========================================================================*/ void LoadAllCifs (char* pFileSpec) { _finddata_t FindData; char Buffer[256]; CDFCifFile DFCif; CDFImgFile DFImage; long FindHandle; int Result; boolean bResult; int FileCount = 0; int LoopCounter; /* Setup parameters */ QuietLogOutput = TRUE; chdir("f:\\dagger\\arena2"); /* Find the first texture */ FindHandle = _findfirst(pFileSpec, &FindData); if (FindHandle == -1) { SystemLog.Printf(stdout, "No cif files found!\n"); return; } /* Find all matching files */ do { SystemLog.Printf ("CIF '%s' (0x%lX bytes)", FindData.name, FindData.size); printf ("%s...", FindData.name); FileCount++; bResult = DFCif.Load(FindData.name); //bResult = DFImage.Load(FindData.name); printf ("%s\n", bResult ? "Loaded." : "Failed!"); if (bResult) { //sprintf(Buffer, "d:\\dfpcx\\img\\%.8s.pcx", FindData.name, FindData.name+3); //PCXImage.ExportLBM(Buffer, DFImage.GetWidth(), DFImage.GetHeight(), DFImage.GetImageData()); //* for (LoopCounter = 0; LoopCounter < DFCif.GetNumImages(); LoopCounter++) { sprintf(Buffer, "d:\\dfpcx\\cif\\%c%5s%02d.pcx", FindData.name[0], FindData.name+3, LoopCounter); PCXImage.ExportLBM(Buffer, DFCif.GetWidth(LoopCounter), DFCif.GetHeight(LoopCounter), DFCif.GetImageData(LoopCounter)); } //*/ } else { ReadFailedCount++; SystemLog.Printf ("\tFailed to load cif!"); } /* Find the next texture */ Result = _findnext(FindHandle, &FindData); } while (Result == 0); /* Close the find files handle */ _findclose(FindHandle); SystemLog.Printf (stdout, "NumFiles = %d (%d Read Failed)\n", FileCount, ReadFailedCount); SystemLog.Printf (stdout, "NumImages = %d \n", ImageCount); } /*=========================================================================== * End of Function LoadAllCifs() *=========================================================================*/ /*=========================================================================== * * Begin Main Program * *=========================================================================*/ void main (void) { SystemLog.Open("texttest.log"); SystemLog.Printf ("Offset Size = %d", sizeof(dftexture_offset_t)); SystemLog.Printf ("PCXHeader Size = %d", sizeof(CPCXHeader)); /* Setup the PCX palette */ PCXImage.SetVGAPalette(DFPalette); //LoadAllTextures("f:\\dagger\\arena2\\texture.253"); LoadAllCifs("f:\\dagger\\arena2\\*.cif"); } /*=========================================================================== * End of Main Program *=========================================================================*/