/////////////////////////////////////////////////////////////////////// // Save to disk file // // Since my compression routines are one thing I did not want to // release, I took out the compressed format option. Most levels will // save out to a node file around 50-200k, so compression is not really // a big deal. /////////////////////////////////////////////////////////////////////// void ACEND_SaveNodes() { FILE *pOut; char tempname[MAX_QPATH] = ""; char filename[MAX_QPATH] = ""; // char filename[60]; int i,j; int version = 1; // Resolve paths ACEND_ResolveAllPaths(); safe_bprintf(PRINT_MEDIUM,"Saving node table..."); // Knightmare- rewote this GameDirRelativePath ("nav", filename); // create nav dir if needed _mkdir (filename); sprintf (tempname, "nav/%s.nod", level.mapname); GameDirRelativePath (tempname, filename); //strcpy(filename,"ace\\nav\\"); //strcat(filename,level.mapname); //strcat(filename,".nod"); if((pOut = fopen(filename, "wb" )) == NULL) return; // bail fwrite(&version,sizeof(int),1,pOut); // write version fwrite(&numnodes,sizeof(int),1,pOut); // write count fwrite(&num_items,sizeof(int),1,pOut); // write facts count fwrite(nodes,sizeof(node_t),numnodes,pOut); // write nodes for(i=0;i<numnodes;i++) for(j=0;j<numnodes;j++) fwrite(&path_table[i][j],sizeof(int16_t),1,pOut); // write count fwrite(item_table,sizeof(item_table_t),num_items,pOut); // write out the fact table fclose(pOut); safe_bprintf(PRINT_MEDIUM,"done.\n"); }
/////////////////////////////////////////////////////////////////////// // Save to disk file // // Since my compression routines are one thing I did not want to // release, I took out the compressed format option. Most levels will // save out to a node file around 50-200k, so compression is not really // a big deal. /////////////////////////////////////////////////////////////////////// void ACEND_SaveNodes() { FILE *pOut; char filename[60]; int i,j; int version = 1; // Resolve paths ACEND_ResolveAllPaths(); safe_bprintf(PRINT_MEDIUM,"Saving node table..."); strcpy(filename,"ace_botroutes/"); mkdir(filename, 0777); strcat(filename,level.mapname); strcat(filename,".nod"); if((pOut = fopen(filename, "wb" )) == NULL) return; // bail fwrite(&version,sizeof(int),1,pOut); // write version fwrite(&numnodes,sizeof(int),1,pOut); // write count fwrite(&num_items,sizeof(int),1,pOut); // write facts count fwrite(nodes,sizeof(node_t),numnodes,pOut); // write nodes for(i=0;i<numnodes;i++) for(j=0;j<numnodes;j++) fwrite(&path_table[i][j],sizeof(short int),1,pOut); // write count fwrite(item_table,sizeof(item_table_t),num_items,pOut); // write out the fact table fclose(pOut); safe_bprintf(PRINT_MEDIUM,"done.\n"); }
// Save to disk file // // Since my compression routines are one thing I did not want to // release, I took out the compressed format option. Most levels will // save out to a node file around 50-200k, so compression is not really // a big deal. void ACEND_SaveNodes() { fileHandle_t file; char filename[MAX_QPATH]; int i, j; int version = 1; char mapname[MAX_QPATH]; ACEND_ResolveAllPaths(); trap_Cvar_VariableStringBuffer("mapname", mapname, sizeof(mapname)); Com_sprintf(filename, sizeof(filename), "nav/%s.nod", mapname); trap_FS_FOpenFile(filename, &file, FS_WRITE); if(!file) { G_Printf("WARNING: Couldn't write node table: %s\n", filename); return; } else G_Printf("ACE: Saving node table '%s'...", filename); trap_FS_Write(&version, sizeof(int), file); trap_FS_Write(&numNodes, sizeof(int), file); trap_FS_Write(nodes, sizeof(node_t) * numNodes, file); for(i = 0; i < numNodes; i++) for(j = 0; j < numNodes; j++) trap_FS_Write(&path_table[i][j], sizeof(short int), file); // write count trap_FS_FCloseFile(file); G_Printf("done.\n"); G_Printf("%i nodes saved\n", numNodes); }