diff --git a/BizHawk.Client.Common/BizHawk.Client.Common.csproj b/BizHawk.Client.Common/BizHawk.Client.Common.csproj index f551a77dd7..013fea1fd2 100644 --- a/BizHawk.Client.Common/BizHawk.Client.Common.csproj +++ b/BizHawk.Client.Common/BizHawk.Client.Common.csproj @@ -151,6 +151,7 @@ + diff --git a/BizHawk.Client.Common/movie/MovieService.cs b/BizHawk.Client.Common/movie/MovieService.cs index 25207b3577..4f0fbde76d 100644 --- a/BizHawk.Client.Common/movie/MovieService.cs +++ b/BizHawk.Client.Common/movie/MovieService.cs @@ -6,6 +6,7 @@ using System.Reflection; using System.Text; using BizHawk.Common; +using BizHawk.Client.Common.MovieConversionExtensions; namespace BizHawk.Client.Common { @@ -26,7 +27,17 @@ namespace BizHawk.Client.Common } else { - return new BkmMovie(path); + var movie = new BkmMovie(path); + + if (VersionInfo.DeveloperBuild) + { + movie.Load(); + return movie.ToBk2(); + } + else + { + return movie; + } } } diff --git a/BizHawk.Client.Common/movie/bk2/Bk2Movie.cs b/BizHawk.Client.Common/movie/bk2/Bk2Movie.cs index 8d6b4576f2..ed48a2c4ac 100644 --- a/BizHawk.Client.Common/movie/bk2/Bk2Movie.cs +++ b/BizHawk.Client.Common/movie/bk2/Bk2Movie.cs @@ -36,7 +36,8 @@ namespace BizHawk.Client.Common public string Filename { get; set; } - public virtual string PreferredExtension { get { return "bk2"; } } + public virtual string PreferredExtension { get { return Extension; } } + public const string Extension = "bk2"; public bool Changes { get; private set; } public bool IsCountingRerecords { get; set; } diff --git a/BizHawk.Client.Common/movie/bkm/BkmMovie.cs b/BizHawk.Client.Common/movie/bkm/BkmMovie.cs index 7477a7c758..9797534e84 100644 --- a/BizHawk.Client.Common/movie/bkm/BkmMovie.cs +++ b/BizHawk.Client.Common/movie/bkm/BkmMovie.cs @@ -37,7 +37,9 @@ namespace BizHawk.Client.Common return new BkmLogEntryGenerator(); } - public string PreferredExtension { get { return "bkm"; } } + public string PreferredExtension { get { return Extension; } } + public const string Extension = "bkm"; + public BkmHeader Header { get; private set; } public string Filename { get; set; } public bool IsCountingRerecords { get; set; } diff --git a/BizHawk.Client.Common/movie/conversions/MovieConversionExtensions.cs b/BizHawk.Client.Common/movie/conversions/MovieConversionExtensions.cs new file mode 100644 index 0000000000..95a6e7c70c --- /dev/null +++ b/BizHawk.Client.Common/movie/conversions/MovieConversionExtensions.cs @@ -0,0 +1,41 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; + +namespace BizHawk.Client.Common.MovieConversionExtensions +{ + public static class MovieConversionExtensions + { + public static Bk2Movie ToBk2(this BkmMovie bkm) + { + var newFilename = bkm.Filename + "." + Bk2Movie.Extension; + var bk2 = new Bk2Movie(bkm.Filename); + bk2.HeaderEntries.Clear(); + foreach(var kvp in bkm.HeaderEntries) + { + bk2.HeaderEntries[kvp.Key] = kvp.Value; + } + + bk2.SyncSettingsJson = bkm.SyncSettingsJson; + + bk2.Comments.Clear(); + foreach(var comment in bkm.Comments) + { + bk2.Comments.Add(comment); + } + + bk2.Subtitles.Clear(); + foreach(var sub in bkm.Subtitles) + { + bk2.Subtitles.Add(sub); + } + + // TODO: savestate + // TODO: input log + + return bk2; + } + } +} diff --git a/BizHawk.Client.Common/movie/tasproj/TasMovie.cs b/BizHawk.Client.Common/movie/tasproj/TasMovie.cs index 0428dd793d..66c30c9f0a 100644 --- a/BizHawk.Client.Common/movie/tasproj/TasMovie.cs +++ b/BizHawk.Client.Common/movie/tasproj/TasMovie.cs @@ -31,7 +31,7 @@ namespace BizHawk.Client.Common } } - public const string Extension = "tasproj"; + public new const string Extension = "tasproj"; public MovieRecord this[int index] {