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 Input = "Input Log";
public const string CorestateText = "CoreText";
public const string Movieheader = "Movie";
public const string Movieheader = "Header";
}
/// <summary>

View File

@ -5,7 +5,8 @@ namespace BizHawk.Client.Common
{
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 MOVIEVERSION = "MovieVersion";

View File

@ -19,7 +19,7 @@ namespace BizHawk.Client.Common
BoardProperties = new Dictionary<string, string>();
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.GAMENAME] = String.Empty;
this[HeaderKeys.AUTHOR] = String.Empty;

View File

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

View File

@ -2,7 +2,7 @@
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using BizHawk.Emulation.Common;
namespace BizHawk.Client.Common
@ -80,6 +80,7 @@ namespace BizHawk.Client.Common
{
Filename = String.Empty;
Header = new MovieHeader { StartsFromSavestate = startsFromSavestate };
Header[HeaderKeys.MOVIEVERSION] = HeaderKeys.MovieVersion2;
_records = new MovieRecordList();
_mode = Moviemode.Inactive;
IsCountingRerecords = true;
@ -166,7 +167,12 @@ namespace BizHawk.Client.Common
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()

View File

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

View File

@ -96,7 +96,7 @@ namespace BizHawk.Client.EmuHawk
//Header
_movieToRecord.Header[HeaderKeys.AUTHOR] = AuthorBox.Text;
_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;
if (Global.Game != null)
{

View File

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

View File

@ -20,6 +20,10 @@ namespace BizHawk.Client.EmuHawk
private int _defaultHeight;
private TasMovie _tas;
// Input Painting
private string StartDrawColumn = String.Empty;
private bool StartOn = false;
#region API
public TAStudio()
@ -206,6 +210,28 @@ namespace BizHawk.Client.EmuHawk
#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)
{
Close();
@ -255,9 +281,6 @@ namespace BizHawk.Client.EmuHawk
#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)
{
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)
{
if (TASView.IsPaintDown && e.NewCell.Row.HasValue && !String.IsNullOrEmpty(StartDrawColumn))
@ -282,5 +303,7 @@ namespace BizHawk.Client.EmuHawk
}
#endregion
#endregion
}
}

View File

@ -11,6 +11,36 @@ namespace BizHawk.Client.EmuHawk
{
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)
{
var ofd = new OpenFileDialog();