From ca457d4ce3017a1bafcc3d77391fd4c120ba5e69 Mon Sep 17 00:00:00 2001 From: "andres.delikat" Date: Thu, 12 May 2011 21:00:04 +0000 Subject: [PATCH] Implement Play Movie from beginning, add author & rerecord header params to file reading/writing code. --- BizHawk.MultiClient/MainForm.MenuItems.cs | 6 +++++- BizHawk.MultiClient/MainForm.cs | 21 +++++++++++++++--- BizHawk.MultiClient/movie/Movie.cs | 26 +++++++++++++++++++++++ BizHawk.MultiClient/movie/MovieHeader.cs | 5 +++++ 4 files changed, 54 insertions(+), 4 deletions(-) diff --git a/BizHawk.MultiClient/MainForm.MenuItems.cs b/BizHawk.MultiClient/MainForm.MenuItems.cs index 37f477bc19..cdb839e92d 100644 --- a/BizHawk.MultiClient/MainForm.MenuItems.cs +++ b/BizHawk.MultiClient/MainForm.MenuItems.cs @@ -149,7 +149,11 @@ namespace BizHawk.MultiClient private void playFromBeginningToolStripMenuItem_Click(object sender, EventArgs e) { - + if (InputLog.GetMovieMode() != MOVIEMODE.INACTIVE) + { + LoadRom(CurrentlyOpenRom); + UserMovie.StartPlayback(); + } } diff --git a/BizHawk.MultiClient/MainForm.cs b/BizHawk.MultiClient/MainForm.cs index 70e82f8631..fbe9668cea 100644 --- a/BizHawk.MultiClient/MainForm.cs +++ b/BizHawk.MultiClient/MainForm.cs @@ -1067,10 +1067,25 @@ namespace BizHawk.MultiClient var reader = new StreamReader(path); Global.Emulator.LoadStateText(reader); + + //TODO: more logic regarding each movie mode - if (InputLog.GetMovieMode() == MOVIEMODE.RECORD) - InputLog.LoadLogFromSavestateText(reader); - reader.Close(); + if (UserMovie.GetMovieMode() != MOVIEMODE.INACTIVE) + { + if (UserMovie.GetMovieMode() == MOVIEMODE.RECORD) + { + UserMovie.LoadLogFromSavestateText(reader); + UserMovie. + } + } + else + { + if (InputLog.GetMovieMode() == MOVIEMODE.RECORD) + InputLog.LoadLogFromSavestateText(reader); + } + + + reader.Close(); Global.RenderPanel.AddMessage("Loaded state: " + name); } diff --git a/BizHawk.MultiClient/movie/Movie.cs b/BizHawk.MultiClient/movie/Movie.cs index 92e296bbe4..da5e2d588a 100644 --- a/BizHawk.MultiClient/movie/Movie.cs +++ b/BizHawk.MultiClient/movie/Movie.cs @@ -175,6 +175,16 @@ namespace BizHawk.MultiClient str = ParseHeader(str, MovieHeader.GAMENAME); Header.AddHeaderLine(MovieHeader.GAMENAME, str); } + else if (str.Contains(MovieHeader.RERECORDS)) + { + str = ParseHeader(str, MovieHeader.RERECORDS); + Header.AddHeaderLine(MovieHeader.RERECORDS, str); + } + else if (str.Contains(MovieHeader.AUTHOR)) + { + str = ParseHeader(str, MovieHeader.AUTHOR); + Header.AddHeaderLine(MovieHeader.AUTHOR, str); + } else if (str[0] == '|') { Log.AddFrame(str); @@ -212,6 +222,7 @@ namespace BizHawk.MultiClient { continue; } + //TODO: don't reiterate this entire if chain, make a function called by this and loadmovie else if (str.Contains(MovieHeader.EMULATIONVERSION)) { str = ParseHeader(str, MovieHeader.EMULATIONVERSION); @@ -232,6 +243,16 @@ namespace BizHawk.MultiClient str = ParseHeader(str, MovieHeader.GAMENAME); Header.AddHeaderLine(MovieHeader.GAMENAME, str); } + else if (str.Contains(MovieHeader.RERECORDS)) + { + str = ParseHeader(str, MovieHeader.RERECORDS); + Header.AddHeaderLine(MovieHeader.RERECORDS, str); + } + else if (str.Contains(MovieHeader.AUTHOR)) + { + str = ParseHeader(str, MovieHeader.AUTHOR); + Header.AddHeaderLine(MovieHeader.AUTHOR, str); + } else if (str[0] == '|') { break; @@ -287,5 +308,10 @@ namespace BizHawk.MultiClient Log.AddFrame(line); } } + + public void IncrementRerecordCount() + { + rerecordCount++; + } } } diff --git a/BizHawk.MultiClient/movie/MovieHeader.cs b/BizHawk.MultiClient/movie/MovieHeader.cs index d27af67e37..509b00ac1e 100644 --- a/BizHawk.MultiClient/movie/MovieHeader.cs +++ b/BizHawk.MultiClient/movie/MovieHeader.cs @@ -59,6 +59,11 @@ namespace BizHawk.MultiClient HeaderParams.Add(key, value); } + public void UpdateRerecordCount(int count) + { + //TODO + } + public bool RemoveHeaderLine(string key) { return HeaderParams.Remove(key);