diff --git a/BizHawk.Client.Common/movie/tasproj/TasMovie.IO.cs b/BizHawk.Client.Common/movie/tasproj/TasMovie.IO.cs index c1b8803516..e10437cb10 100644 --- a/BizHawk.Client.Common/movie/tasproj/TasMovie.IO.cs +++ b/BizHawk.Client.Common/movie/tasproj/TasMovie.IO.cs @@ -66,7 +66,7 @@ namespace BizHawk.Client.Common Branches.Save(bs); } - bs.PutLump(BinaryStateLump.Session, tw => tw.WriteLine(Session.ToString())); + bs.PutLump(BinaryStateLump.Session, tw => tw.WriteLine(JsonConvert.SerializeObject(Session))); if (_stateManager.Settings.SaveStateHistory && !backup) { @@ -253,7 +253,15 @@ namespace BizHawk.Client.Common bl.GetLump(BinaryStateLump.Session, false, delegate(TextReader tr) { - Session.PopulateFromString(tr.ReadToEnd()); + var json = tr.ReadToEnd(); + try + { + Session = JsonConvert.DeserializeObject(json); + } + catch + { + // Do nothing, and use default settings instead + } }); if (!preload) diff --git a/BizHawk.Client.Common/movie/tasproj/TasMovie.cs b/BizHawk.Client.Common/movie/tasproj/TasMovie.cs index 4f56947df2..038d6ef885 100644 --- a/BizHawk.Client.Common/movie/tasproj/TasMovie.cs +++ b/BizHawk.Client.Common/movie/tasproj/TasMovie.cs @@ -20,7 +20,7 @@ namespace BizHawk.Client.Common public readonly IStringLog VerificationLog = StringLogUtil.MakeStringLog(); // For movies that do not begin with power-on, this is the input required to get into the initial state public readonly TasBranchCollection Branches = new TasBranchCollection(); - public readonly TasSession Session; + public TasSession Session { get; private set; } public new const string Extension = "tasproj"; public const string DefaultProjectName = "default"; diff --git a/BizHawk.Client.Common/movie/tasproj/TasSession.cs b/BizHawk.Client.Common/movie/tasproj/TasSession.cs index 355454e635..bafe45bdbd 100644 --- a/BizHawk.Client.Common/movie/tasproj/TasSession.cs +++ b/BizHawk.Client.Common/movie/tasproj/TasSession.cs @@ -21,35 +21,5 @@ namespace BizHawk.Client.Common CurrentFrame = Global.Emulator.Frame; CurrentBranch = _movie.CurrentBranch; } - - public override string ToString() - { - UpdateValues(); - - var sb = new StringBuilder(); - sb.AppendLine(CurrentFrame.ToString()); - sb.AppendLine(CurrentBranch.ToString()); - - return sb.ToString(); - } - - public void PopulateFromString(string session) - { - if (!string.IsNullOrWhiteSpace(session)) - { - string[] lines = session.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries); - - CurrentFrame = lines.Length > 0 ? int.Parse(lines[0]) : 0; - - if (lines.Length > 1) - { - CurrentBranch = int.Parse(lines[1]); - } - else - { - CurrentBranch = -1; - } - } - } } }