TasMovie - implement saving of movie log into files, make header have the proper movie version (v2!), Change file "Movie" to "Header". TAStudio - implement Save and Save As menu items

This commit is contained in:
adelikat 2013-12-10 01:45:45 +00:00
parent 1d0db18244
commit fd149237ee
10 changed files with 76 additions and 15 deletions

View File

@ -11,7 +11,7 @@ namespace BizHawk.Client.Common
public const string Framebuffer = "Framebuffer"; public const string Framebuffer = "Framebuffer";
public const string Input = "Input Log"; public const string Input = "Input Log";
public const string CorestateText = "CoreText"; public const string CorestateText = "CoreText";
public const string Movieheader = "Movie"; public const string Movieheader = "Header";
} }
/// <summary> /// <summary>

View File

@ -5,7 +5,8 @@ namespace BizHawk.Client.Common
{ {
public static class HeaderKeys public static class HeaderKeys
{ {
public const string MovieVersion = "BizHawk v0.0.1"; public const string MovieVersion1 = "BizHawk v0.0.1";
public const string MovieVersion2 = "BizHawk v0.0.2";
public const string EMULATIONVERSION = "emuVersion"; public const string EMULATIONVERSION = "emuVersion";
public const string MOVIEVERSION = "MovieVersion"; public const string MOVIEVERSION = "MovieVersion";

View File

@ -19,7 +19,7 @@ namespace BizHawk.Client.Common
BoardProperties = new Dictionary<string, string>(); BoardProperties = new Dictionary<string, string>();
this[HeaderKeys.EMULATIONVERSION] = VersionInfo.GetEmuVersion(); this[HeaderKeys.EMULATIONVERSION] = VersionInfo.GetEmuVersion();
this[HeaderKeys.MOVIEVERSION] = HeaderKeys.MovieVersion; this[HeaderKeys.MOVIEVERSION] = HeaderKeys.MovieVersion1;
this[HeaderKeys.PLATFORM] = Global.Emulator != null ? Global.Emulator.SystemId : String.Empty; this[HeaderKeys.PLATFORM] = Global.Emulator != null ? Global.Emulator.SystemId : String.Empty;
this[HeaderKeys.GAMENAME] = String.Empty; this[HeaderKeys.GAMENAME] = String.Empty;
this[HeaderKeys.AUTHOR] = String.Empty; this[HeaderKeys.AUTHOR] = String.Empty;

View File

@ -85,7 +85,7 @@ namespace BizHawk.Client.Common
} }
if (errorMsg == String.Empty) if (errorMsg == String.Empty)
{ {
m.Header[HeaderKeys.MOVIEVERSION] = HeaderKeys.MovieVersion; m.Header[HeaderKeys.MOVIEVERSION] = HeaderKeys.MovieVersion1;
} }
} }
catch (Exception except) catch (Exception except)

View File

@ -2,7 +2,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Text;
using BizHawk.Emulation.Common; using BizHawk.Emulation.Common;
namespace BizHawk.Client.Common namespace BizHawk.Client.Common
@ -80,6 +80,7 @@ namespace BizHawk.Client.Common
{ {
Filename = String.Empty; Filename = String.Empty;
Header = new MovieHeader { StartsFromSavestate = startsFromSavestate }; Header = new MovieHeader { StartsFromSavestate = startsFromSavestate };
Header[HeaderKeys.MOVIEVERSION] = HeaderKeys.MovieVersion2;
_records = new MovieRecordList(); _records = new MovieRecordList();
_mode = Moviemode.Inactive; _mode = Moviemode.Inactive;
IsCountingRerecords = true; IsCountingRerecords = true;
@ -166,7 +167,12 @@ namespace BizHawk.Client.Common
public string GetInputLog() public string GetInputLog()
{ {
return _records.ToString(); StringBuilder sb = new StringBuilder();
foreach (var record in _records)
{
sb.AppendLine(_mg.GenerateMnemonicString(record.Buttons));
}
return sb.ToString();
} }
public void SwitchToRecord() public void SwitchToRecord()

View File

@ -349,7 +349,7 @@ namespace BizHawk.Client.EmuHawk
} }
break; break;
case HeaderKeys.MOVIEVERSION: case HeaderKeys.MOVIEVERSION:
if (kvp.Value != HeaderKeys.MovieVersion) if (kvp.Value != HeaderKeys.MovieVersion1)
{ {
item.BackColor = Color.Yellow; item.BackColor = Color.Yellow;
} }

View File

@ -96,7 +96,7 @@ namespace BizHawk.Client.EmuHawk
//Header //Header
_movieToRecord.Header[HeaderKeys.AUTHOR] = AuthorBox.Text; _movieToRecord.Header[HeaderKeys.AUTHOR] = AuthorBox.Text;
_movieToRecord.Header[HeaderKeys.EMULATIONVERSION] = VersionInfo.GetEmuVersion(); _movieToRecord.Header[HeaderKeys.EMULATIONVERSION] = VersionInfo.GetEmuVersion();
_movieToRecord.Header[HeaderKeys.MOVIEVERSION] = HeaderKeys.MovieVersion; _movieToRecord.Header[HeaderKeys.MOVIEVERSION] = HeaderKeys.MovieVersion1;
_movieToRecord.Header[HeaderKeys.PLATFORM] = Global.Game.System; _movieToRecord.Header[HeaderKeys.PLATFORM] = Global.Game.System;
if (Global.Game != null) if (Global.Game != null)
{ {

View File

@ -142,6 +142,7 @@ namespace BizHawk.Client.EmuHawk
this.FileSubMenu.Name = "FileSubMenu"; this.FileSubMenu.Name = "FileSubMenu";
this.FileSubMenu.Size = new System.Drawing.Size(37, 20); this.FileSubMenu.Size = new System.Drawing.Size(37, 20);
this.FileSubMenu.Text = "&File"; this.FileSubMenu.Text = "&File";
this.FileSubMenu.DropDownOpened += new System.EventHandler(this.FileSubMenu_DropDownOpened);
// //
// NewTASMenuItem // NewTASMenuItem
// //
@ -161,20 +162,20 @@ namespace BizHawk.Client.EmuHawk
// //
// SaveTASMenuItem // SaveTASMenuItem
// //
this.SaveTASMenuItem.Enabled = false;
this.SaveTASMenuItem.Name = "SaveTASMenuItem"; this.SaveTASMenuItem.Name = "SaveTASMenuItem";
this.SaveTASMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.S))); this.SaveTASMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.S)));
this.SaveTASMenuItem.Size = new System.Drawing.Size(186, 22); this.SaveTASMenuItem.Size = new System.Drawing.Size(186, 22);
this.SaveTASMenuItem.Text = "&Save"; this.SaveTASMenuItem.Text = "&Save";
this.SaveTASMenuItem.Click += new System.EventHandler(this.SaveTASMenuItem_Click);
// //
// SaveAsTASMenuItem // SaveAsTASMenuItem
// //
this.SaveAsTASMenuItem.Enabled = false;
this.SaveAsTASMenuItem.Name = "SaveAsTASMenuItem"; this.SaveAsTASMenuItem.Name = "SaveAsTASMenuItem";
this.SaveAsTASMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)(((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift) this.SaveAsTASMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)(((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift)
| System.Windows.Forms.Keys.S))); | System.Windows.Forms.Keys.S)));
this.SaveAsTASMenuItem.Size = new System.Drawing.Size(186, 22); this.SaveAsTASMenuItem.Size = new System.Drawing.Size(186, 22);
this.SaveAsTASMenuItem.Text = "Save As"; this.SaveAsTASMenuItem.Text = "Save As";
this.SaveAsTASMenuItem.Click += new System.EventHandler(this.SaveAsTASMenuItem_Click);
// //
// RecentSubMenu // RecentSubMenu
// //

View File

@ -20,6 +20,10 @@ namespace BizHawk.Client.EmuHawk
private int _defaultHeight; private int _defaultHeight;
private TasMovie _tas; private TasMovie _tas;
// Input Painting
private string StartDrawColumn = String.Empty;
private bool StartOn = false;
#region API #region API
public TAStudio() public TAStudio()
@ -206,6 +210,28 @@ namespace BizHawk.Client.EmuHawk
#region File Menu #region File Menu
private void FileSubMenu_DropDownOpened(object sender, EventArgs e)
{
SaveTASMenuItem.Enabled = !String.IsNullOrWhiteSpace(_tas.Filename);
}
private void SaveTASMenuItem_Click(object sender, EventArgs e)
{
_tas.Save();
// TODO: inform the user it happened somehow
}
private void SaveAsTASMenuItem_Click(object sender, EventArgs e)
{
var file = ToolHelpers.GetTasProjSaveFileFromUser(_tas.Filename);
if (DialogResult != null)
{
_tas.Filename = file.FullName;
_tas.Save();
// TODO: inform the user it happened somehow
}
}
private void ExitMenuItem_Click(object sender, EventArgs e) private void ExitMenuItem_Click(object sender, EventArgs e)
{ {
Close(); Close();
@ -255,9 +281,6 @@ namespace BizHawk.Client.EmuHawk
#region TASView Events #region TASView Events
private string StartDrawColumn = String.Empty; //TODO: move me
private bool StartOn = false; //TODO: move me
private void TASView_MouseDown(object sender, MouseEventArgs e) private void TASView_MouseDown(object sender, MouseEventArgs e)
{ {
if (TASView.PointedCell.Row.HasValue && !String.IsNullOrEmpty(TASView.PointedCell.Column)) if (TASView.PointedCell.Row.HasValue && !String.IsNullOrEmpty(TASView.PointedCell.Column))
@ -270,8 +293,6 @@ namespace BizHawk.Client.EmuHawk
} }
} }
#endregion
private void TASView_PointedCellChanged(object sender, TasListView.CellEventArgs e) private void TASView_PointedCellChanged(object sender, TasListView.CellEventArgs e)
{ {
if (TASView.IsPaintDown && e.NewCell.Row.HasValue && !String.IsNullOrEmpty(StartDrawColumn)) if (TASView.IsPaintDown && e.NewCell.Row.HasValue && !String.IsNullOrEmpty(StartDrawColumn))
@ -282,5 +303,7 @@ namespace BizHawk.Client.EmuHawk
} }
#endregion #endregion
#endregion
} }
} }

View File

@ -11,6 +11,36 @@ namespace BizHawk.Client.EmuHawk
{ {
public static class ToolHelpers public static class ToolHelpers
{ {
public static FileInfo GetTasProjSaveFileFromUser(string currentFile)
{
var sfd = new SaveFileDialog();
if (!String.IsNullOrWhiteSpace(currentFile))
{
sfd.FileName = Path.GetFileNameWithoutExtension(currentFile);
sfd.InitialDirectory = Path.GetDirectoryName(currentFile);
}
else if (!(Global.Emulator is NullEmulator))
{
sfd.FileName = PathManager.FilesystemSafeName(Global.Game);
sfd.InitialDirectory = PathManager.MakeAbsolutePath(Global.Config.PathEntries.MoviesPath, null);
}
else
{
sfd.FileName = "NULL";
sfd.InitialDirectory = PathManager.MakeAbsolutePath(Global.Config.PathEntries.MoviesPath, null);
}
sfd.Filter = "Tas Project Files (*.tasproj)|*.tasproj|All Files|*.*";
sfd.RestoreDirectory = true;
var result = sfd.ShowHawkDialog();
if (result != DialogResult.OK)
{
return null;
}
return new FileInfo(sfd.FileName);
}
public static FileInfo GetWatchFileFromUser(string currentFile) public static FileInfo GetWatchFileFromUser(string currentFile)
{ {
var ofd = new OpenFileDialog(); var ofd = new OpenFileDialog();