/* ============== ReleaseFile Filename should be gamedir reletive. Either copies the file to the release dir, or adds it to the pak file. ============== */ void ReleaseFile (char *filename) { int len; byte *buf; char source[1024]; char dest[1024]; if (!g_release) return; sprintf (source, "%s%s", gamedir, filename); if (!g_pak) { // copy it sprintf (dest, "%s/%s", g_releasedir, filename); printf ("copying to %s\n", dest); QCopyFile (source, dest); return; } // pak it printf ("paking %s\n", filename); if (strlen(filename) >= sizeof(pf->name)) Error ("Filename too long for pak: %s", filename); len = LoadFile (source, (void **)&buf); if (g_compress_pak && len < 4096*1024 ) { cblock_t in, out; cblock_t Huffman (cblock_t in); in.count = len; in.data = buf; out = Huffman (in); if (out.count < in.count) { printf (" compressed from %i to %i\n", in.count, out.count); free (in.data); buf = out.data; len = out.count; } else free (out.data); } strcpy (pf->name, filename); pf->filepos = LittleLong(ftell(pakfile)); pf->filelen = LittleLong(len); pf++; SafeWrite (pakfile, buf, len); free (buf); }
/* ============== ReleaseFile Filename should be gamedir reletive. Either copies the file to the release dir, or adds it to the pak file. ============== */ void ReleaseFile (char *filename) { char source[1024]; char dest[1024]; if (!g_release) return; sprintf (source, "%s%s", gamedir, filename); sprintf (dest, "%s/%s", g_releasedir, filename); printf ("copying to %s\n", dest); QCopyFile (source, dest); return; }
/* ============== ReleaseFile Filename should be gamedir reletive. Either copies the file to the release dir, or adds it to the pak file. ============== */ void ReleaseFile (char *filename) { int len; byte *buf; char source[1024]; char dest[1024]; if (!g_release) return; sprintf (source, "%s%s", gamedir, filename); if (!g_pak) { // copy it sprintf (dest, "%s/%s", g_releasedir, filename); printf ("copying to %s\n", dest); QCopyFile (source, dest); return; } // pak it printf ("paking %s\n", filename); if (strlen(filename) >= sizeof(pf->name)) Error ("Filename too long for pak: %s", filename); len = LoadFile (source, (void **)&buf); // segment moved to old.c strcpy (pf->name, filename); pf->filepos = LittleLong(ftell(pakfile)); pf->filelen = LittleLong(len); pf++; SafeWrite (pakfile, buf, len); free (buf); }
/* ============== ReleaseShader Copies all needed files for a shader to the release directory ============== */ void ReleaseShader( char *filename ) { char fullpath[1024]; char dest[1024]; char stripped[1024]; int i; sprintf( fullpath, "%s%s", gamedir, filename ); FindShaderFiles( fullpath ); for ( i = 0; i < s_shaderFiles.num; i++ ) { strcpy( stripped, s_shaderFiles.names[i] ); if ( strstr( stripped, gamedir ) ) { memmove( stripped, stripped+ strlen( gamedir ), strlen( stripped ) ); } sprintf( dest, "%s/%s", g_releasedir, stripped ); printf ("copying to %s\n", dest ); QCopyFile( s_shaderFiles.names[i], dest ); } }