void rewind_recording( void) { if(replay.game_is_being_recorded) { /* This is unnecessary, because it is called from reset_player_queues, */ /* which is always called from revert_game */ /* FilmFile.SetLength(sizeof(recording_header)); FilmFile.SetPosition(sizeof(recording_header)); */ // Alternative that does not use "SetLength", but instead creates and re-creates the file. FilmFile.SetPosition(0); byte Header[SIZEOF_recording_header]; FilmFile.Read(SIZEOF_recording_header,Header); FilmFile.Close(); FilmFileSpec.Delete(); FilmFileSpec.Create(_typecode_film); FilmFileSpec.Open(FilmFile,true); FilmFile.Write(SIZEOF_recording_header,Header); // Use the packed length here!!! replay.header.length= SIZEOF_recording_header; } }
void WadImageCache::delete_storage_for_name(std::string& name) const { FileSpecifier file; file.SetToImageCacheDir(); file.AddPart(name); file.Delete(); }
/* Note that we _must_ set the header information before we start recording!! */ void start_recording( void) { assert(!replay.valid); replay.valid= true; if(get_recording_filedesc(FilmFileSpec)) FilmFileSpec.Delete(); if (FilmFileSpec.Create(_typecode_film)) { /* I debate the validity of fsCurPerm here, but Alain had it, and it has been working */ if (FilmFileSpec.Open(FilmFile,true)) { replay.game_is_being_recorded= true; // save a header containing information about the game. byte Header[SIZEOF_recording_header]; pack_recording_header(Header,&replay.header,1); FilmFile.Write(SIZEOF_recording_header,Header); } } }