public static TasMovie ToTasMovie(this IMovie old, bool copy = false) { 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, old.StartsFromSavestate); for (var i = 0; i < old.InputLogLength; i++) { var input = old.GetInputState(i); tas.AppendFrame(input); } if (!copy) { old.Truncate(0); // Trying to minimize ram usage } tas.HeaderEntries.Clear(); foreach (var kvp in old.HeaderEntries) { tas.HeaderEntries[kvp.Key] = kvp.Value; } 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); } tas.TextSavestate = old.TextSavestate; tas.BinarySavestate = old.BinarySavestate; return(tas); }
public static TasMovie ToTasMovie(this IMovie old) { var newFilename = old.Filename + "." + TasMovie.Extension; var tas = new TasMovie(newFilename); tas.HeaderEntries.Clear(); foreach (var kvp in old.HeaderEntries) { tas.HeaderEntries[kvp.Key] = kvp.Value; } 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); } tas.TextSavestate = old.TextSavestate; tas.BinarySavestate = old.BinarySavestate; for (var i = 0; i < old.InputLogLength; i++) { var input = old.GetInputState(i); tas.AppendFrame(input); } return tas; }
public static TasMovie ToTasMovie(this IMovie old) { var newFilename = old.Filename + "." + TasMovie.Extension; var tas = new TasMovie(newFilename); tas.HeaderEntries.Clear(); foreach (var kvp in old.HeaderEntries) { tas.HeaderEntries[kvp.Key] = kvp.Value; } 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); } tas.TextSavestate = old.TextSavestate; tas.BinarySavestate = old.BinarySavestate; for (var i = 0; i < old.InputLogLength; i++) { var input = old.GetInputState(i); tas.AppendFrame(input); } return(tas); }
public static TasMovie ToTasMovie(this IMovie old, bool copy = false) { 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, old.StartsFromSavestate); tas.TasStateManager.MountWriteAccess(); for (var i = 0; i < old.InputLogLength; i++) { var input = old.GetInputState(i); tas.AppendFrame(input); } if (!copy) { old.Truncate(0); // Trying to minimize ram usage } tas.HeaderEntries.Clear(); foreach (var kvp in old.HeaderEntries) { tas.HeaderEntries[kvp.Key] = kvp.Value; } 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); } tas.TextSavestate = old.TextSavestate; tas.BinarySavestate = old.BinarySavestate; tas.SaveRam = old.SaveRam; return tas; }