public static TasMovie ConvertToSaveRamAnchoredMovie(this TasMovie old, byte[] saveRam) { string newFilename = old.Filename + "." + TasMovie.Extension; if (File.Exists(newFilename)) { int fileNum = 1; bool fileConflict = true; while (fileConflict) { if (File.Exists(newFilename)) { newFilename = old.Filename + " (" + fileNum + ")" + "." + TasMovie.Extension; fileNum++; } else { fileConflict = false; } } } TasMovie tas = new TasMovie(newFilename, true); tas.SaveRam = saveRam; tas.TasStateManager.Clear(); tas.ClearLagLog(); var entries = old.GetLogEntries(); tas.CopyVerificationLog(old.VerificationLog); tas.CopyVerificationLog(entries); tas.HeaderEntries.Clear(); foreach (var kvp in old.HeaderEntries) { tas.HeaderEntries[kvp.Key] = kvp.Value; } tas.StartsFromSaveRam = true; tas.StartsFromSavestate = false; tas.SyncSettingsJson = old.SyncSettingsJson; tas.Comments.Clear(); foreach (string comment in old.Comments) { tas.Comments.Add(comment); } tas.Subtitles.Clear(); foreach (Subtitle sub in old.Subtitles) { tas.Subtitles.Add(sub); } tas.TasStateManager.Settings = old.TasStateManager.Settings; tas.Save(); return(tas); }
public static TasMovie ConvertToSaveRamAnchoredMovie(this TasMovie old, byte[] saveRam) { string newFilename = old.Filename + "." + TasMovie.Extension; if (File.Exists(newFilename)) { int fileNum = 1; bool fileConflict = true; while (fileConflict) { if (File.Exists(newFilename)) { newFilename = old.Filename + " (" + fileNum + ")" + "." + TasMovie.Extension; fileNum++; } else { fileConflict = false; } } } TasMovie tas = new TasMovie(newFilename, true); tas.SaveRam = saveRam; tas.TasStateManager.Clear(); tas.ClearLagLog(); List<string> entries = old.GetLogEntries(); tas.CopyVerificationLog(old.VerificationLog); tas.CopyVerificationLog(entries); tas.HeaderEntries.Clear(); foreach (var kvp in old.HeaderEntries) { tas.HeaderEntries[kvp.Key] = kvp.Value; } tas.StartsFromSaveRam = true; tas.StartsFromSavestate = false; tas.SyncSettingsJson = old.SyncSettingsJson; tas.Comments.Clear(); foreach (string comment in old.Comments) { tas.Comments.Add(comment); } tas.Subtitles.Clear(); foreach (Subtitle sub in old.Subtitles) { tas.Subtitles.Add(sub); } tas.TasStateManager.Settings = old.TasStateManager.Settings; tas.Save(); return tas; }
public static TasMovie ConvertToSavestateAnchoredMovie(this TasMovie old, int frame, byte[] savestate) { string newFilename = old.Filename + "." + TasMovie.Extension; if (File.Exists(newFilename)) { int fileNum = 1; bool fileConflict = true; while (fileConflict) { if (File.Exists(newFilename)) { newFilename = old.Filename + " (" + fileNum + ")" + "." + TasMovie.Extension; fileNum++; } else { fileConflict = false; } } } TasMovie tas = new TasMovie(newFilename, true); tas.BinarySavestate = savestate; tas.ClearLagLog(); var entries = old.GetLogEntries(); tas.CopyLog(entries.Skip(frame)); tas.CopyVerificationLog(old.VerificationLog); tas.CopyVerificationLog(entries.Take(frame)); // States can't be easily moved over, because they contain the frame number. // TODO? I'm not sure how this would be done. tas.TasStateManager.MountWriteAccess(); old.TasStateManager.Clear(); // Lag Log tas.TasLagLog.FromLagLog(old.TasLagLog); tas.TasLagLog.StartFromFrame(frame); tas.HeaderEntries.Clear(); foreach (var kvp in old.HeaderEntries) { tas.HeaderEntries[kvp.Key] = kvp.Value; } tas.StartsFromSavestate = true; tas.SyncSettingsJson = old.SyncSettingsJson; tas.Comments.Clear(); foreach (string comment in old.Comments) { tas.Comments.Add(comment); } tas.Subtitles.Clear(); foreach (Subtitle sub in old.Subtitles) { tas.Subtitles.Add(sub); } foreach (TasMovieMarker marker in old.Markers) { if (marker.Frame > frame) { tas.Markers.Add(new TasMovieMarker(marker.Frame - frame, marker.Message)); } } tas.TasStateManager.Settings = old.TasStateManager.Settings; tas.Save(); return(tas); }
public static TasMovie ConvertToSavestateAnchoredMovie(this TasMovie old, int frame, byte[] savestate) { string newFilename = old.Filename + "." + TasMovie.Extension; if (File.Exists(newFilename)) { int fileNum = 1; bool fileConflict = true; while (fileConflict) { if (File.Exists(newFilename)) { newFilename = old.Filename + " (" + fileNum + ")" + "." + TasMovie.Extension; fileNum++; } else { fileConflict = false; } } } TasMovie tas = new TasMovie(newFilename, true); tas.BinarySavestate = savestate; tas.ClearLagLog(); var entries = old.GetLogEntries(); tas.CopyLog(entries.Skip(frame)); tas.CopyVerificationLog(old.VerificationLog); tas.CopyVerificationLog(entries.Take(frame)); // States can't be easily moved over, because they contain the frame number. // TODO? I'm not sure how this would be done. tas.TasStateManager.MountWriteAccess(); old.TasStateManager.Clear(); // Lag Log tas.TasLagLog.FromLagLog(old.TasLagLog); tas.TasLagLog.StartFromFrame(frame); tas.HeaderEntries.Clear(); foreach (var kvp in old.HeaderEntries) { tas.HeaderEntries[kvp.Key] = kvp.Value; } tas.StartsFromSavestate = true; tas.SyncSettingsJson = old.SyncSettingsJson; tas.Comments.Clear(); foreach (string comment in old.Comments) { tas.Comments.Add(comment); } tas.Subtitles.Clear(); foreach (Subtitle sub in old.Subtitles) { tas.Subtitles.Add(sub); } foreach (TasMovieMarker marker in old.Markers) { if (marker.Frame > frame) tas.Markers.Add(new TasMovieMarker(marker.Frame - frame, marker.Message)); } tas.TasStateManager.Settings = old.TasStateManager.Settings; tas.Save(); return tas; }
public static TasMovie ConvertToSavestateAnchoredMovie(this TasMovie old, int frame, byte[] savestate) { string newFilename = old.Filename + "." + TasMovie.Extension; if (File.Exists(newFilename)) { int fileNum = 1; bool fileConflict = true; while (fileConflict) { if (File.Exists(newFilename)) { newFilename = old.Filename + " (" + fileNum + ")" + "." + TasMovie.Extension; fileNum++; } else { fileConflict = false; } } } var tas = new TasMovie(newFilename, true); tas.BinarySavestate = savestate; tas.TasStateManager.Clear(); tas.ClearLagLog(); var entries = old.GetLogEntries(); tas.CopyLog(entries.Skip(frame)); tas.CopyVerificationLog(entries.Take(frame)); tas.HeaderEntries.Clear(); foreach (var kvp in old.HeaderEntries) { tas.HeaderEntries[kvp.Key] = kvp.Value; } tas.StartsFromSavestate = true; tas.SyncSettingsJson = old.SyncSettingsJson; tas.Comments.Clear(); foreach (var comment in old.Comments) { tas.Comments.Add(comment); } tas.Subtitles.Clear(); foreach (var sub in old.Subtitles) { tas.Subtitles.Add(sub); } foreach(var marker in old.Markers) { if (marker.Frame > 0) { tas.Markers.Add(marker); } } tas.TasStateManager.Settings = old.TasStateManager.Settings; tas.Save(); return tas; }
public static TasMovie ConvertToSaveRamAnchoredMovie(this TasMovie old, byte[] saveRam) { string newFilename = old.Filename; if (old.Filename.Contains("tasproj")) { newFilename = newFilename.Remove(newFilename.Length - 7, 7); newFilename = $"{newFilename}nfsr.{TasMovie.Extension}"; } else { newFilename = $"{old.Filename}.{TasMovie.Extension}"; } if (File.Exists(newFilename)) { int fileNum = 1; bool fileConflict = true; while (fileConflict) { if (File.Exists(newFilename)) { newFilename = $"{old.Filename} ({fileNum}).{TasMovie.Extension}"; fileNum++; } else { fileConflict = false; } } } var tas = new TasMovie(newFilename, true) { SaveRam = saveRam }; tas.TasStateManager.Clear(); tas.ClearLagLog(); var entries = old.GetLogEntries(); tas.CopyVerificationLog(old.VerificationLog); tas.CopyVerificationLog(entries); tas.HeaderEntries.Clear(); foreach (var kvp in old.HeaderEntries) { tas.HeaderEntries[kvp.Key] = kvp.Value; } tas.StartsFromSaveRam = true; tas.StartsFromSavestate = false; tas.SyncSettingsJson = old.SyncSettingsJson; tas.Comments.Clear(); foreach (string comment in old.Comments) { tas.Comments.Add(comment); } tas.Subtitles.Clear(); foreach (Subtitle sub in old.Subtitles) { tas.Subtitles.Add(sub); } tas.TasStateManager.Settings = old.TasStateManager.Settings; tas.Save(); return(tas); }