Movie - movie SubtitleList object into the Header object

This commit is contained in:
adelikat 2013-11-29 20:26:24 +00:00
parent 29a0fa49f8
commit a8b355c7d2
9 changed files with 54 additions and 43 deletions

View File

@ -91,9 +91,9 @@ namespace BizHawk.Client.Common
string GetInput(int frame); // Should be a property of a Record object string GetInput(int frame); // Should be a property of a Record object
MovieHeader Header { get; } // Don't expose this!!! MovieHeader Header { get; } // Expose IMovieHEader instead
MovieLog LogDump { get; } // Don't expose this!!! MovieLog LogDump { get; } // Don't expose this!!!
SubtitleList Subtitles { get; } // Don't expose this!!! //SubtitleList Subtitles { get; } // Don't expose this!!!
#endregion #endregion
} }

View File

@ -22,7 +22,6 @@ namespace BizHawk.Client.Common
public Movie(bool startsFromSavestate = false) public Movie(bool startsFromSavestate = false)
{ {
Header = new MovieHeader(); Header = new MovieHeader();
Subtitles = new SubtitleList();
Filename = String.Empty; Filename = String.Empty;
_preloadFramecount = 0; _preloadFramecount = 0;
StartsFromSavestate = startsFromSavestate; StartsFromSavestate = startsFromSavestate;
@ -36,8 +35,7 @@ namespace BizHawk.Client.Common
#region Properties #region Properties
public MovieHeader Header { get; private set; } public MovieHeader Header { get; private set; }
public SubtitleList Subtitles { get; private set; }
public bool MakeBackup { get; set; } public bool MakeBackup { get; set; }
public string Filename { get; set; } public string Filename { get; set; }
public bool IsCountingRerecords { get; set; } public bool IsCountingRerecords { get; set; }
@ -293,7 +291,7 @@ namespace BizHawk.Client.Common
if (str.StartsWith("subtitle") || str.StartsWith("sub")) if (str.StartsWith("subtitle") || str.StartsWith("sub"))
{ {
Subtitles.AddFromString(str); Header.Subtitles.AddFromString(str);
} }
else if (str[0] == '|') else if (str[0] == '|')
{ {
@ -751,20 +749,17 @@ namespace BizHawk.Client.Common
private void WriteText(Stream stream) private void WriteText(Stream stream)
{ {
using (StreamWriter sw = new StreamWriter(stream)) using (var sw = new StreamWriter(stream))
{ {
sw.Write(Header.ToString()); sw.Write(Header.ToString());
//TODO: clean this up // TODO: clean this up
if (_loopOffset.HasValue) if (_loopOffset.HasValue)
{ {
sw.WriteLine("LoopOffset " + _loopOffset.ToString()); sw.WriteLine("LoopOffset " + _loopOffset.ToString());
} }
foreach (var subtitle in Subtitles) sw.Write(Header.Subtitles.ToString());
{
sw.WriteLine(subtitle.ToString());
}
for (int i = 0; i < _log.Length; i++) for (int i = 0; i < _log.Length; i++)
{ {
@ -836,7 +831,7 @@ namespace BizHawk.Client.Common
} }
else if (str.StartsWith("subtitle") || str.StartsWith("sub")) else if (str.StartsWith("subtitle") || str.StartsWith("sub"))
{ {
Subtitles.AddFromString(str); Header.Subtitles.AddFromString(str);
} }
else if (Header.AddHeaderFromLine(str)) else if (Header.AddHeaderFromLine(str))
{ {

View File

@ -1,4 +1,5 @@
using System.Collections.Generic; using System;
using System.Collections.Generic;
using System.IO; using System.IO;
using System.Text; using System.Text;
@ -18,6 +19,10 @@ namespace BizHawk.Client.Common
public Dictionary<string, string> BoardProperties = new Dictionary<string, string>(); public Dictionary<string, string> BoardProperties = new Dictionary<string, string>();
public SubtitleList Subtitles { get; private set; }
#region Header Constants
public const string EMULATIONVERSION = "emuVersion"; public const string EMULATIONVERSION = "emuVersion";
public const string MOVIEVERSION = "MovieVersion"; public const string MOVIEVERSION = "MovieVersion";
public const string PLATFORM = "Platform"; public const string PLATFORM = "Platform";
@ -46,21 +51,23 @@ namespace BizHawk.Client.Common
//Board properties //Board properties
public const string BOARDPROPERTIES = "BoardProperty"; public const string BOARDPROPERTIES = "BoardProperty";
#endregion
public static string MovieVersion = "BizHawk v0.0.1"; public static string MovieVersion = "BizHawk v0.0.1";
public static string MakeGUID() public static string MakeGUID()
{ {
return System.Guid.NewGuid().ToString(); return Guid.NewGuid().ToString();
} }
public MovieHeader() //All required fields will be set to default values public MovieHeader() //All required fields will be set to default values
{ {
Subtitles = new SubtitleList();
HeaderParams.Add(EMULATIONVERSION, VersionInfo.GetEmuVersion()); HeaderParams.Add(EMULATIONVERSION, VersionInfo.GetEmuVersion());
HeaderParams.Add(MOVIEVERSION, MovieVersion); HeaderParams.Add(MOVIEVERSION, MovieVersion);
HeaderParams.Add(PLATFORM, ""); HeaderParams.Add(PLATFORM, String.Empty);
HeaderParams.Add(GAMENAME, ""); HeaderParams.Add(GAMENAME, String.Empty);
HeaderParams.Add(AUTHOR, ""); HeaderParams.Add(AUTHOR, String.Empty);
HeaderParams.Add(RERECORDS, "0"); HeaderParams.Add(RERECORDS, "0");
HeaderParams.Add(GUID, MakeGUID()); HeaderParams.Add(GUID, MakeGUID());
} }

View File

@ -279,7 +279,7 @@ namespace BizHawk.Client.Common
length = line.Substring(first + 1, second - first - 1); length = line.Substring(first + 1, second - first - 1);
} }
string message = line.Substring(second + 1).Trim(); string message = line.Substring(second + 1).Trim();
m.Subtitles.AddFromString("subtitle " + frame + " 0 0 " + length + " FFFFFFFF " + message); m.Header.Subtitles.AddFromString("subtitle " + frame + " 0 0 " + length + " FFFFFFFF " + message);
} }
return m; return m;
} }

View File

@ -2,6 +2,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Globalization; using System.Globalization;
using System.Linq; using System.Linq;
using System.Text;
namespace BizHawk.Client.Common namespace BizHawk.Client.Common
{ {
@ -12,6 +13,13 @@ namespace BizHawk.Client.Common
return this.Where(t => frame >= t.Frame && frame <= t.Frame + t.Duration); return this.Where(t => frame >= t.Frame && frame <= t.Frame + t.Duration);
} }
public override string ToString()
{
var sb = new StringBuilder();
ForEach(subtitle => sb.AppendLine(subtitle.ToString()));
return sb.ToString();
}
public bool AddFromString(string subtitleStr) public bool AddFromString(string subtitleStr)
{ {
if (!String.IsNullOrWhiteSpace(subtitleStr)) if (!String.IsNullOrWhiteSpace(subtitleStr))

View File

@ -628,7 +628,7 @@ namespace BizHawk.Client.EmuHawk
if (Global.MovieSession.Movie.IsActive && Global.Config.DisplaySubtitles) if (Global.MovieSession.Movie.IsActive && Global.Config.DisplaySubtitles)
{ {
var subList = Global.MovieSession.Movie.Subtitles.GetSubtitles(Global.Emulator.Frame).ToList(); var subList = Global.MovieSession.Movie.Header.Subtitles.GetSubtitles(Global.Emulator.Frame).ToList();
for (int i = 0; i < subList.Count; i++) for (int i = 0; i < subList.Count; i++)
{ {

View File

@ -1850,14 +1850,15 @@ namespace BizHawk.Client.EmuHawk
private void AddSubtitleContextMenuItem_Click(object sender, EventArgs e) private void AddSubtitleContextMenuItem_Click(object sender, EventArgs e)
{ {
//TODO: rethink this?
var subForm = new SubtitleMaker(); var subForm = new SubtitleMaker();
subForm.DisableFrame(); subForm.DisableFrame();
int index = -1; int index = -1;
var sub = new Subtitle(); var sub = new Subtitle();
for (int x = 0; x < Global.MovieSession.Movie.Subtitles.Count; x++) for (int x = 0; x < Global.MovieSession.Movie.Header.Subtitles.Count; x++)
{ {
sub = Global.MovieSession.Movie.Subtitles[x]; sub = Global.MovieSession.Movie.Header.Subtitles[x];
if (Global.Emulator.Frame == sub.Frame) if (Global.Emulator.Frame == sub.Frame)
{ {
index = x; index = x;
@ -1876,10 +1877,10 @@ namespace BizHawk.Client.EmuHawk
{ {
if (index >= 0) if (index >= 0)
{ {
Global.MovieSession.Movie.Subtitles.RemoveAt(index); Global.MovieSession.Movie.Header.Subtitles.RemoveAt(index);
} }
Global.MovieSession.Movie.Subtitles.Add(subForm.Sub); Global.MovieSession.Movie.Header.Subtitles.Add(subForm.Sub);
} }
} }

View File

@ -51,30 +51,30 @@ namespace BizHawk.Client.EmuHawk
{ {
if (!ReadOnly) if (!ReadOnly)
{ {
_selectedMovie.Subtitles.Clear(); _selectedMovie.Header.Subtitles.Clear();
for (int x = 0; x < SubGrid.Rows.Count - 1; x++) for (int i = 0; i < SubGrid.Rows.Count - 1; i++)
{ {
var s = new Subtitle(); var s = new Subtitle();
var c = SubGrid.Rows[x].Cells[0]; var c = SubGrid.Rows[i].Cells[0];
try { s.Frame = int.Parse(c.Value.ToString()); } try { s.Frame = int.Parse(c.Value.ToString()); }
catch { ShowError(x, 0); return; } catch { ShowError(i, 0); return; }
c = SubGrid.Rows[x].Cells[1]; c = SubGrid.Rows[i].Cells[1];
try { s.X = int.Parse(c.Value.ToString()); } try { s.X = int.Parse(c.Value.ToString()); }
catch { ShowError(x, 1); return; } catch { ShowError(i, 1); return; }
c = SubGrid.Rows[x].Cells[2]; c = SubGrid.Rows[i].Cells[2];
try { s.Y = int.Parse(c.Value.ToString()); } try { s.Y = int.Parse(c.Value.ToString()); }
catch { ShowError(x, 2); return; } catch { ShowError(i, 2); return; }
c = SubGrid.Rows[x].Cells[3]; c = SubGrid.Rows[i].Cells[3];
try { s.Duration = int.Parse(c.Value.ToString()); } try { s.Duration = int.Parse(c.Value.ToString()); }
catch { ShowError(x, 3); return; } catch { ShowError(i, 3); return; }
c = SubGrid.Rows[x].Cells[4]; c = SubGrid.Rows[i].Cells[4];
try { s.Color = uint.Parse(c.Value.ToString(), NumberStyles.HexNumber); } try { s.Color = uint.Parse(c.Value.ToString(), NumberStyles.HexNumber); }
catch { ShowError(x, 4); return; } catch { ShowError(i, 4); return; }
try { c = SubGrid.Rows[x].Cells[5]; } try { c = SubGrid.Rows[i].Cells[5]; }
catch { ShowError(x, 5); return; } catch { ShowError(i, 5); return; }
s.Message = c.Value.ToString(); s.Message = c.Value.ToString();
_selectedMovie.Subtitles.Add(s); _selectedMovie.Header.Subtitles.Add(s);
} }
_selectedMovie.Save(); _selectedMovie.Save();
} }
@ -85,7 +85,7 @@ namespace BizHawk.Client.EmuHawk
{ {
_selectedMovie = m; _selectedMovie = m;
var subs = new SubtitleList(); var subs = new SubtitleList();
subs.AddRange(m.Subtitles); subs.AddRange(m.Header.Subtitles);
for (int x = 0; x < subs.Count; x++) for (int x = 0; x < subs.Count; x++)
{ {
@ -150,7 +150,7 @@ namespace BizHawk.Client.EmuHawk
c = SubGrid.Rows[index].Cells[5]; c = SubGrid.Rows[index].Cells[5];
try { s.Message = c.Value.ToString(); } try { s.Message = c.Value.ToString(); }
catch { } catch { }
_selectedMovie.Subtitles.Add(s); _selectedMovie.Header.Subtitles.Add(s);
return s; return s;
} }

View File

@ -382,7 +382,7 @@ namespace BizHawk.Client.EmuHawk
DetailsView.Items.Add(FramesItem); DetailsView.Items.Add(FramesItem);
CommentsBtn.Enabled = _movieList[firstIndex].Header.Comments.Any(); CommentsBtn.Enabled = _movieList[firstIndex].Header.Comments.Any();
SubtitlesBtn.Enabled = _movieList[firstIndex].Subtitles.Any(); SubtitlesBtn.Enabled = _movieList[firstIndex].Header.Subtitles.Any();
} }
private void button1_Click(object sender, EventArgs e) private void button1_Click(object sender, EventArgs e)