From c59b9ff6ce2158db0d1b9f77ed105b392d4b4e3c Mon Sep 17 00:00:00 2001 From: "andres.delikat" Date: Fri, 25 Feb 2011 22:26:13 +0000 Subject: [PATCH] More progress on the movie class, basic movie file writing. Survives round trip testing --- BizHawk.MultiClient/MainForm.MenuItems.cs | 1 + BizHawk.MultiClient/movie/Movie.cs | 40 +++++++++++++++++++---- BizHawk.MultiClient/movie/MovieHeader.cs | 9 ++++- BizHawk.MultiClient/movie/MovieLog.cs | 5 +++ BizHawk.MultiClient/output/log.tas | 6 ++++ 5 files changed, 53 insertions(+), 8 deletions(-) create mode 100644 BizHawk.MultiClient/output/log.tas diff --git a/BizHawk.MultiClient/MainForm.MenuItems.cs b/BizHawk.MultiClient/MainForm.MenuItems.cs index dc73e60dd7..7392050f39 100644 --- a/BizHawk.MultiClient/MainForm.MenuItems.cs +++ b/BizHawk.MultiClient/MainForm.MenuItems.cs @@ -128,6 +128,7 @@ namespace BizHawk.MultiClient //p.ShowDialog(); //Hacky testing + InputLog.LoadMovie(); InputLog.WriteMovie(); } diff --git a/BizHawk.MultiClient/movie/Movie.cs b/BizHawk.MultiClient/movie/Movie.cs index 3a4028f77c..5e8567e881 100644 --- a/BizHawk.MultiClient/movie/Movie.cs +++ b/BizHawk.MultiClient/movie/Movie.cs @@ -62,39 +62,65 @@ namespace BizHawk.MultiClient } + private string ParseHeader(string line, string headerName) + { + string str; + int x = line.LastIndexOf(headerName) + headerName.Length; + str = line.Substring(x + 1, line.Length - x - 1); + return str; + } + private bool LoadText() { var file = new FileInfo(Filename); + + if (file.Exists == false) + return false; + else + { + Header.Clear(); + Log.Clear(); + } + using (StreamReader sr = file.OpenText()) { string str = ""; while ((str = sr.ReadLine()) != null) { - if (str.Contains(MovieHeader.EMULATIONVERSION)) + if (str == "") { - + continue; + } + else if (str.Contains(MovieHeader.EMULATIONVERSION)) + { + str = ParseHeader(str, MovieHeader.EMULATIONVERSION); + Header.AddHeaderLine(MovieHeader.EMULATIONVERSION, str); } else if (str.Contains(MovieHeader.MOVIEVERSION)) { - + str = ParseHeader(str, MovieHeader.MOVIEVERSION); + Header.AddHeaderLine(MovieHeader.MOVIEVERSION, str); } else if (str.Contains(MovieHeader.PLATFORM)) { - + str = ParseHeader(str, MovieHeader.PLATFORM); + Header.AddHeaderLine(MovieHeader.PLATFORM, str); } else if (str.Contains(MovieHeader.GAMENAME)) { - + str = ParseHeader(str, MovieHeader.GAMENAME); + Header.AddHeaderLine(MovieHeader.GAMENAME, str); } else if (str[0] == '|') { - + Log.AddFrame(str); //TODO: validate proper formatting } else { - //Something has gone wrong here! + //TODO: Something has gone wrong here! } + } } diff --git a/BizHawk.MultiClient/movie/MovieHeader.cs b/BizHawk.MultiClient/movie/MovieHeader.cs index 2c65c37801..bd7d80cb9f 100644 --- a/BizHawk.MultiClient/movie/MovieHeader.cs +++ b/BizHawk.MultiClient/movie/MovieHeader.cs @@ -44,7 +44,9 @@ namespace BizHawk.MultiClient /// public void AddHeaderLine(string key, string value) //TODO: check for redundancy and return bool? { - if (!HeaderParams.TryGetValue(key, out value)) //TODO: does a failed attempt mess with value? + string temp = value; + + if (!HeaderParams.TryGetValue(key, out temp)) //TODO: does a failed attempt mess with value? HeaderParams.Add(key, value); } @@ -53,6 +55,11 @@ namespace BizHawk.MultiClient return HeaderParams.Remove(key); } + public void Clear() + { + HeaderParams.Clear(); + } + public string GetHeaderLine(string key) { string value = ""; diff --git a/BizHawk.MultiClient/movie/MovieLog.cs b/BizHawk.MultiClient/movie/MovieLog.cs index 6857805cfe..d4cfe75c0e 100644 --- a/BizHawk.MultiClient/movie/MovieLog.cs +++ b/BizHawk.MultiClient/movie/MovieLog.cs @@ -17,6 +17,11 @@ namespace BizHawk.MultiClient } + public void Clear() + { + MovieRecords.Clear(); + } + public int GetMovieLength() { return MovieRecords.Count; diff --git a/BizHawk.MultiClient/output/log.tas b/BizHawk.MultiClient/output/log.tas new file mode 100644 index 0000000000..17bba62950 --- /dev/null +++ b/BizHawk.MultiClient/output/log.tas @@ -0,0 +1,6 @@ +EmulationVersion v1.0.0 +MovieVersion v1.0.0 +Platform PCE +GameName Bonk.pce +|........|0| +