Make movie class handle automatically backing up a movie before the first time it alters it, add flag to MultiClient to toggle the movie backup feature

This commit is contained in:
andres.delikat 2011-06-18 19:16:05 +00:00
parent 67f726eae6
commit b95264e9bf
5 changed files with 54 additions and 29 deletions

View File

@ -101,6 +101,7 @@
public bool SingleInstanceMode = false;
public bool AllowUD_LR = false;
public bool ShowContextMenu = true;
public bool EnableBackupMovies = true;
// Run-Control settings
public int FrameProgressDelayMs = 500; //how long until a frame advance hold turns into a frame progress?

View File

@ -212,6 +212,7 @@
this.toolStripSeparator20 = new System.Windows.Forms.ToolStripSeparator();
this.screenshotToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
this.closeROMToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
this.automaticallyBackupMoviesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.menuStrip1.SuspendLayout();
this.statusStrip1.SuspendLayout();
this.contextMenuStrip1.SuspendLayout();
@ -231,7 +232,7 @@
this.menuStrip1.LayoutStyle = System.Windows.Forms.ToolStripLayoutStyle.Flow;
this.menuStrip1.Location = new System.Drawing.Point(0, 0);
this.menuStrip1.Name = "menuStrip1";
this.menuStrip1.Size = new System.Drawing.Size(470, 21);
this.menuStrip1.Size = new System.Drawing.Size(470, 23);
this.menuStrip1.TabIndex = 0;
this.menuStrip1.Text = "menuStrip1";
this.menuStrip1.MenuDeactivate += new System.EventHandler(this.menuStrip1_MenuDeactivate);
@ -260,7 +261,7 @@
// openROMToolStripMenuItem
//
this.openROMToolStripMenuItem.Name = "openROMToolStripMenuItem";
this.openROMToolStripMenuItem.Size = new System.Drawing.Size(145, 22);
this.openROMToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.openROMToolStripMenuItem.Text = "Open ROM";
this.openROMToolStripMenuItem.Click += new System.EventHandler(this.openROMToolStripMenuItem_Click);
//
@ -272,7 +273,7 @@
this.clearToolStripMenuItem,
this.autoloadMostRecentToolStripMenuItem});
this.recentROMToolStripMenuItem.Name = "recentROMToolStripMenuItem";
this.recentROMToolStripMenuItem.Size = new System.Drawing.Size(145, 22);
this.recentROMToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.recentROMToolStripMenuItem.Text = "Recent ROM";
this.recentROMToolStripMenuItem.DropDownOpened += new System.EventHandler(this.recentROMToolStripMenuItem_DropDownOpened);
//
@ -304,14 +305,14 @@
// closeROMToolStripMenuItem
//
this.closeROMToolStripMenuItem.Name = "closeROMToolStripMenuItem";
this.closeROMToolStripMenuItem.Size = new System.Drawing.Size(145, 22);
this.closeROMToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.closeROMToolStripMenuItem.Text = "&Close ROM";
this.closeROMToolStripMenuItem.Click += new System.EventHandler(this.closeROMToolStripMenuItem_Click);
//
// toolStripMenuItem1
//
this.toolStripMenuItem1.Name = "toolStripMenuItem1";
this.toolStripMenuItem1.Size = new System.Drawing.Size(142, 6);
this.toolStripMenuItem1.Size = new System.Drawing.Size(149, 6);
//
// saveStateToolStripMenuItem
//
@ -329,7 +330,7 @@
this.toolStripSeparator6,
this.saveNamedStateToolStripMenuItem});
this.saveStateToolStripMenuItem.Name = "saveStateToolStripMenuItem";
this.saveStateToolStripMenuItem.Size = new System.Drawing.Size(145, 22);
this.saveStateToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.saveStateToolStripMenuItem.Text = "Save State";
this.saveStateToolStripMenuItem.DropDownOpened += new System.EventHandler(this.saveStateToolStripMenuItem_DropDownOpened);
//
@ -431,7 +432,7 @@
this.toolStripSeparator7,
this.loadNamedStateToolStripMenuItem});
this.loadStateToolStripMenuItem.Name = "loadStateToolStripMenuItem";
this.loadStateToolStripMenuItem.Size = new System.Drawing.Size(145, 22);
this.loadStateToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.loadStateToolStripMenuItem.Text = "Load State";
this.loadStateToolStripMenuItem.DropDownOpened += new System.EventHandler(this.loadStateToolStripMenuItem_DropDownOpened);
//
@ -536,7 +537,7 @@
this.saveToCurrentSlotToolStripMenuItem,
this.loadCurrentSlotToolStripMenuItem});
this.saveSlotToolStripMenuItem.Name = "saveSlotToolStripMenuItem";
this.saveSlotToolStripMenuItem.Size = new System.Drawing.Size(145, 22);
this.saveSlotToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.saveSlotToolStripMenuItem.Text = "SaveSlot";
this.saveSlotToolStripMenuItem.DropDownOpened += new System.EventHandler(this.saveSlotToolStripMenuItem_DropDownOpened);
//
@ -646,7 +647,7 @@
// toolStripMenuItem2
//
this.toolStripMenuItem2.Name = "toolStripMenuItem2";
this.toolStripMenuItem2.Size = new System.Drawing.Size(142, 6);
this.toolStripMenuItem2.Size = new System.Drawing.Size(149, 6);
//
// movieToolStripMenuItem
//
@ -659,23 +660,24 @@
this.stopMovieToolStripMenuItem,
this.playFromBeginningToolStripMenuItem,
this.toolStripSeparator14,
this.bindSavestatesToMoviesToolStripMenuItem});
this.bindSavestatesToMoviesToolStripMenuItem,
this.automaticallyBackupMoviesToolStripMenuItem});
this.movieToolStripMenuItem.Name = "movieToolStripMenuItem";
this.movieToolStripMenuItem.Size = new System.Drawing.Size(145, 22);
this.movieToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.movieToolStripMenuItem.Text = "Movie";
this.movieToolStripMenuItem.DropDownOpened += new System.EventHandler(this.movieToolStripMenuItem_DropDownOpened);
//
// readonlyToolStripMenuItem
//
this.readonlyToolStripMenuItem.Name = "readonlyToolStripMenuItem";
this.readonlyToolStripMenuItem.Size = new System.Drawing.Size(211, 22);
this.readonlyToolStripMenuItem.Size = new System.Drawing.Size(222, 22);
this.readonlyToolStripMenuItem.Text = "Read-only";
this.readonlyToolStripMenuItem.Click += new System.EventHandler(this.readonlyToolStripMenuItem_Click);
//
// toolStripSeparator15
//
this.toolStripSeparator15.Name = "toolStripSeparator15";
this.toolStripSeparator15.Size = new System.Drawing.Size(208, 6);
this.toolStripSeparator15.Size = new System.Drawing.Size(219, 6);
//
// recentToolStripMenuItem
//
@ -685,7 +687,7 @@
this.clearToolStripMenuItem1,
this.autoloadMostRecentToolStripMenuItem1});
this.recentToolStripMenuItem.Name = "recentToolStripMenuItem";
this.recentToolStripMenuItem.Size = new System.Drawing.Size(211, 22);
this.recentToolStripMenuItem.Size = new System.Drawing.Size(222, 22);
this.recentToolStripMenuItem.Text = "Recent";
this.recentToolStripMenuItem.DropDownOpened += new System.EventHandler(this.recentToolStripMenuItem_DropDownOpened);
//
@ -715,40 +717,40 @@
// recordMovieToolStripMenuItem
//
this.recordMovieToolStripMenuItem.Name = "recordMovieToolStripMenuItem";
this.recordMovieToolStripMenuItem.Size = new System.Drawing.Size(211, 22);
this.recordMovieToolStripMenuItem.Size = new System.Drawing.Size(222, 22);
this.recordMovieToolStripMenuItem.Text = "&Record Movie...";
this.recordMovieToolStripMenuItem.Click += new System.EventHandler(this.recordMovieToolStripMenuItem_Click);
//
// playMovieToolStripMenuItem
//
this.playMovieToolStripMenuItem.Name = "playMovieToolStripMenuItem";
this.playMovieToolStripMenuItem.Size = new System.Drawing.Size(211, 22);
this.playMovieToolStripMenuItem.Size = new System.Drawing.Size(222, 22);
this.playMovieToolStripMenuItem.Text = "&Play Movie...";
this.playMovieToolStripMenuItem.Click += new System.EventHandler(this.playMovieToolStripMenuItem_Click);
//
// stopMovieToolStripMenuItem
//
this.stopMovieToolStripMenuItem.Name = "stopMovieToolStripMenuItem";
this.stopMovieToolStripMenuItem.Size = new System.Drawing.Size(211, 22);
this.stopMovieToolStripMenuItem.Size = new System.Drawing.Size(222, 22);
this.stopMovieToolStripMenuItem.Text = "Stop Movie";
this.stopMovieToolStripMenuItem.Click += new System.EventHandler(this.stopMovieToolStripMenuItem_Click);
//
// playFromBeginningToolStripMenuItem
//
this.playFromBeginningToolStripMenuItem.Name = "playFromBeginningToolStripMenuItem";
this.playFromBeginningToolStripMenuItem.Size = new System.Drawing.Size(211, 22);
this.playFromBeginningToolStripMenuItem.Size = new System.Drawing.Size(222, 22);
this.playFromBeginningToolStripMenuItem.Text = "Play from Beginning";
this.playFromBeginningToolStripMenuItem.Click += new System.EventHandler(this.playFromBeginningToolStripMenuItem_Click);
//
// toolStripSeparator14
//
this.toolStripSeparator14.Name = "toolStripSeparator14";
this.toolStripSeparator14.Size = new System.Drawing.Size(208, 6);
this.toolStripSeparator14.Size = new System.Drawing.Size(219, 6);
//
// bindSavestatesToMoviesToolStripMenuItem
//
this.bindSavestatesToMoviesToolStripMenuItem.Name = "bindSavestatesToMoviesToolStripMenuItem";
this.bindSavestatesToMoviesToolStripMenuItem.Size = new System.Drawing.Size(211, 22);
this.bindSavestatesToMoviesToolStripMenuItem.Size = new System.Drawing.Size(222, 22);
this.bindSavestatesToMoviesToolStripMenuItem.Text = "Bind Savestates to Movies";
this.bindSavestatesToMoviesToolStripMenuItem.Click += new System.EventHandler(this.bindSavestatesToMoviesToolStripMenuItem_Click);
//
@ -758,7 +760,7 @@
this.screenshotF12ToolStripMenuItem,
this.screenshotAsToolStripMenuItem});
this.screenshotToolStripMenuItem.Name = "screenshotToolStripMenuItem";
this.screenshotToolStripMenuItem.Size = new System.Drawing.Size(145, 22);
this.screenshotToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.screenshotToolStripMenuItem.Text = "Screenshot";
//
// screenshotF12ToolStripMenuItem
@ -778,13 +780,13 @@
// toolStripSeparator4
//
this.toolStripSeparator4.Name = "toolStripSeparator4";
this.toolStripSeparator4.Size = new System.Drawing.Size(142, 6);
this.toolStripSeparator4.Size = new System.Drawing.Size(149, 6);
//
// exitToolStripMenuItem
//
this.exitToolStripMenuItem.Name = "exitToolStripMenuItem";
this.exitToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Alt | System.Windows.Forms.Keys.F4)));
this.exitToolStripMenuItem.Size = new System.Drawing.Size(145, 22);
this.exitToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.exitToolStripMenuItem.Text = "Exit";
this.exitToolStripMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click);
//
@ -1552,7 +1554,7 @@
this.screenshotToolStripMenuItem1,
this.closeROMToolStripMenuItem1});
this.contextMenuStrip1.Name = "contextMenuStrip1";
this.contextMenuStrip1.Size = new System.Drawing.Size(179, 264);
this.contextMenuStrip1.Size = new System.Drawing.Size(179, 242);
this.contextMenuStrip1.Opening += new System.ComponentModel.CancelEventHandler(this.contextMenuStrip1_Opening);
//
// openRomToolStripMenuItem1
@ -1640,6 +1642,13 @@
this.closeROMToolStripMenuItem1.Text = "Close ROM";
this.closeROMToolStripMenuItem1.Click += new System.EventHandler(this.closeROMToolStripMenuItem1_Click);
//
// automaticallyBackupMoviesToolStripMenuItem
//
this.automaticallyBackupMoviesToolStripMenuItem.Name = "automaticallyBackupMoviesToolStripMenuItem";
this.automaticallyBackupMoviesToolStripMenuItem.Size = new System.Drawing.Size(222, 22);
this.automaticallyBackupMoviesToolStripMenuItem.Text = "Automatically Backup Movies";
this.automaticallyBackupMoviesToolStripMenuItem.Click += new System.EventHandler(this.automaticallyBackupMoviesToolStripMenuItem_Click);
//
// MainForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 14F);
@ -1853,6 +1862,7 @@
private System.Windows.Forms.ToolStripMenuItem screenshotToolStripMenuItem1;
private System.Windows.Forms.ToolStripMenuItem closeROMToolStripMenuItem1;
private System.Windows.Forms.ToolStripMenuItem makeMovieBackupToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem automaticallyBackupMoviesToolStripMenuItem;
}
}

View File

@ -825,6 +825,11 @@ namespace BizHawk.MultiClient
private void makeMovieBackupToolStripMenuItem_Click(object sender, EventArgs e)
{
UserMovie.WriteBackup();
}
}
private void automaticallyBackupMoviesToolStripMenuItem_Click(object sender, EventArgs e)
{
Global.Config.EnableBackupMovies ^= true;
}
}
}

View File

@ -2086,6 +2086,7 @@ namespace BizHawk.MultiClient
readonlyToolStripMenuItem.Checked = ReadOnly;
bindSavestatesToMoviesToolStripMenuItem.Checked = Global.Config.BindSavestatesToMovies;
automaticallyBackupMoviesToolStripMenuItem.Checked = Global.Config.EnableBackupMovies;
readonlyToolStripMenuItem.ShortcutKeyDisplayString = Global.Config.ReadOnlyToggleBinding;
recordMovieToolStripMenuItem.ShortcutKeyDisplayString = Global.Config.RecordMovieBinding;

View File

@ -14,6 +14,7 @@ namespace BizHawk.MultiClient
private bool IsText = true;
private string Filename;
public bool MakeBackup = true; //Flag for making backup before altering movie
private MOVIEMODE MovieMode = new MOVIEMODE();
@ -68,6 +69,11 @@ namespace BizHawk.MultiClient
public void StartNewRecording()
{
MovieMode = MOVIEMODE.RECORD;
if (Global.Config.EnableBackupMovies && MakeBackup && Log.Length() > 0)
{
WriteBackup();
MakeBackup = false;
}
Log.Clear();
Header = new MovieHeader(MainForm.EMUVERSION, MovieHeader.MovieVersion, Global.Emulator.SystemId, Global.Game.Name, "", 0);
}
@ -103,9 +109,6 @@ namespace BizHawk.MultiClient
{
Log.Truncate(Global.Emulator.Frame);
}
// if (Global.MainForm.TAStudio1.Engaged)
// Log.AddFrame(Global.MainForm.TAStudio1.GetMnemonic());
// else
Log.AddFrame(Global.ActiveController.GetControllersAsMnemonic());
}
}
@ -363,7 +366,12 @@ namespace BizHawk.MultiClient
//We are in record mode so replace the movie log with the one from the savestate
if (!MultiTrack.isActive)
{
Log.Clear();
if (Global.Config.EnableBackupMovies && MakeBackup && Log.Length() > 0)
{
WriteBackup();
MakeBackup = false;
}
Log.Clear();
while (true)
{
string line = reader.ReadLine();