Some more movie 2.0 progress

This commit is contained in:
adelikat 2014-06-11 02:33:57 +00:00
parent a682c667dd
commit 5d31fb2b3c
7 changed files with 93 additions and 31 deletions

View File

@ -148,6 +148,7 @@
<Compile Include="movie\MnemonicGenerators\NesMnemonicGenerator.cs" />
<Compile Include="movie\MnemonicsGenerator.cs" />
<Compile Include="movie\MovieImport.cs" />
<Compile Include="movie\MovieLoader.cs" />
<Compile Include="movie\MovieMnemonics.cs" />
<Compile Include="movie\MovieSession.cs" />
<Compile Include="movie\MultitrackRecording.cs" />

View File

@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
namespace BizHawk.Client.Common
{
public static class MovieLoader
{
public static IMovie Load(string path)
{
// TODO: open the file and determine the format, and instantiate the appropriate implementation
// Currently we just assume it is a bkm implementation
return new Movie(path);
}
}
}

View File

@ -128,6 +128,19 @@ namespace BizHawk.Client.Common
}
}
public string Hash
{
get
{
throw new NotImplementedException();
}
set
{
throw new NotImplementedException();
}
}
public bool IsActive
{
get { return _mode != Moviemode.Inactive; }

View File

@ -47,12 +47,12 @@ namespace BizHawk.Client.Common
public SubtitleList Subtitles
{
get { return (Header as MovieHeader).Subtitles; }
get { return Header.Subtitles; }
}
public IList<string> Comments
{
get { return (Header as MovieHeader).Comments; }
get { return Header.Comments; }
}
public string SyncSettingsJson
@ -72,12 +72,12 @@ namespace BizHawk.Client.Common
{
get
{
return (Header as MovieHeader).SavestateBinaryBase64Blob;
return Header.SavestateBinaryBase64Blob;
}
set
{
(Header as MovieHeader).SavestateBinaryBase64Blob = value;
Header.SavestateBinaryBase64Blob = value;
}
}
@ -85,12 +85,12 @@ namespace BizHawk.Client.Common
{
get
{
return (Header as MovieHeader).Rerecords;
return Header.Rerecords;
}
set
{
(Header as MovieHeader).Rerecords = value;
Header.Rerecords = value;
}
}
@ -98,12 +98,12 @@ namespace BizHawk.Client.Common
{
get
{
return (Header as MovieHeader).StartsFromSavestate;
return Header.StartsFromSavestate;
}
set
{
(Header as MovieHeader).StartsFromSavestate = value;
Header.StartsFromSavestate = value;
}
}
@ -111,12 +111,12 @@ namespace BizHawk.Client.Common
{
get
{
return (Header as MovieHeader).GameName;
return Header.GameName;
}
set
{
(Header as MovieHeader).GameName = value;
Header.GameName = value;
}
}
@ -124,12 +124,25 @@ namespace BizHawk.Client.Common
{
get
{
return (Header as MovieHeader).SystemID;
return Header.SystemID;
}
set
{
(Header as MovieHeader).SystemID = value;
Header.SystemID = value;
}
}
public string Hash
{
get
{
return Header[HeaderKeys.SHA1];
}
set
{
Header[HeaderKeys.SHA1] = value;
}
}
@ -420,8 +433,11 @@ namespace BizHawk.Client.Common
line = sbLine.ToString();
if (string.IsNullOrWhiteSpace(line) || Header.ParseLineFromFile(line))
{
continue;
(Header as MovieHeader).Comments.Add(line);
}
Header.Comments.Add(line);
}
}
@ -475,7 +491,7 @@ namespace BizHawk.Client.Common
}
else
{
(Header as MovieHeader).Comments.Add(line);
Header.Comments.Add(line);
}
}
}

View File

@ -63,7 +63,7 @@ namespace BizHawk.Client.Common
bool StartsFromSavestate { get; set; }
string GameName { get; set; }
string SystemID { get; set; }
string Hash { get; set; }
#endregion
#region File Handling API

View File

@ -88,12 +88,12 @@ namespace BizHawk.Client.Common
public SubtitleList Subtitles
{
get { return (Header as MovieHeader).Subtitles; }
get { return Header.Subtitles; }
}
public IList<string> Comments
{
get { return (Header as MovieHeader).Comments; }
get { return Header.Comments; }
}
public string SyncSettingsJson
@ -113,12 +113,12 @@ namespace BizHawk.Client.Common
{
get
{
return (Header as MovieHeader).SavestateBinaryBase64Blob;
return Header.SavestateBinaryBase64Blob;
}
set
{
(Header as MovieHeader).SavestateBinaryBase64Blob = value;
Header.SavestateBinaryBase64Blob = value;
}
}
@ -126,12 +126,12 @@ namespace BizHawk.Client.Common
{
get
{
return (Header as MovieHeader).Rerecords;
return Header.Rerecords;
}
set
{
(Header as MovieHeader).Rerecords = value;
Header.Rerecords = value;
}
}
@ -139,12 +139,12 @@ namespace BizHawk.Client.Common
{
get
{
return (Header as MovieHeader).StartsFromSavestate;
return Header.StartsFromSavestate;
}
set
{
(Header as MovieHeader).StartsFromSavestate = value;
Header.StartsFromSavestate = value;
}
}
@ -152,12 +152,12 @@ namespace BizHawk.Client.Common
{
get
{
return (Header as MovieHeader).GameName;
return Header.GameName;
}
set
{
(Header as MovieHeader).GameName = value;
Header.GameName = value;
}
}
@ -165,12 +165,25 @@ namespace BizHawk.Client.Common
{
get
{
return (Header as MovieHeader).SystemID;
return Header.SystemID;
}
set
{
(Header as MovieHeader).SystemID = value;
Header.SystemID = value;
}
}
public string Hash
{
get
{
return Header[HeaderKeys.SHA1];
}
set
{
Header[HeaderKeys.SHA1] = value;
}
}
@ -401,7 +414,7 @@ namespace BizHawk.Client.Common
string line;
while ((line = tr.ReadLine()) != null)
if (!Header.ParseLineFromFile(line))
(Header as MovieHeader).Comments.Add(line);
Header.Comments.Add(line);
});
bl.GetLump(BinaryStateLump.Input, true,
delegate(TextReader tr)

View File

@ -145,16 +145,17 @@ namespace BizHawk.Client.EmuHawk
return null;
}
private Movie PreLoadMovieFile(HawkFile hf, bool force)
private IMovie PreLoadMovieFile(HawkFile hf, bool force)
{
var movie = new Movie(hf.CanonicalFullPath);
// Movies 2.0 TODO: don't cast and find a way to load this stuff with only IMovie!
var movie = (MovieLoader.Load(hf.CanonicalFullPath) as Movie);
try
{
movie.PreLoadText(hf);
// Don't do this from browse
if (movie.Header[HeaderKeys.SHA1] == Global.Game.Hash ||
if (movie.Hash == Global.Game.Hash ||
Global.Config.PlayMovie_MatchHash == false || force)
{
return movie;