From b80b3678318203ea39ec0c97d14ec13d4530460b Mon Sep 17 00:00:00 2001 From: adelikat Date: Sat, 21 Dec 2019 16:34:29 -0600 Subject: [PATCH] refactor IMovie to expose the movie mode, and make extension methods that do IsPlaying type logic. This way there can be direct checks, and more variety of methods without cluttering the interface --- BizHawk.Client.Common/Api/Classes/MovieApi.cs | 50 ++++++++++----- BizHawk.Client.Common/PathManager.cs | 6 +- BizHawk.Client.Common/SavestateManager.cs | 8 +-- BizHawk.Client.Common/movie/MovieSession.cs | 46 +++++++------- .../movie/bk2/Bk2Movie.InputLog.cs | 2 +- .../movie/bk2/Bk2Movie.ModeApi.cs | 17 +---- .../movie/interfaces/IMovie.cs | 43 +++++++++++-- .../movie/tasproj/TasMovie.Editing.cs | 2 +- .../movie/tasproj/TasMovie.cs | 6 +- BizHawk.Client.Common/rewind/Rewinder.cs | 2 +- .../DisplayManager/OSDManager.cs | 30 +++++---- BizHawk.Client.EmuHawk/MainForm.Events.cs | 62 +++++++++---------- BizHawk.Client.EmuHawk/MainForm.Movie.cs | 10 +-- BizHawk.Client.EmuHawk/MainForm.cs | 24 +++---- BizHawk.Client.EmuHawk/Program.cs | 36 +++++------ .../config/GB/GBPrefControl.cs | 6 +- .../config/GenericCoreConfig.cs | 2 +- .../tools/BasicBot/BasicBot.cs | 4 +- .../tools/Macros/MacroInput.cs | 2 +- .../tools/TAStudio/PlaybackBox.cs | 2 +- .../TAStudio/TAStudio.IControlMainForm.cs | 8 ++- .../tools/TAStudio/TAStudio.ListView.cs | 6 +- .../tools/TAStudio/TAStudio.Navigation.cs | 6 +- .../tools/TAStudio/TAStudio.cs | 4 +- .../tools/VirtualPads/VirtualpadsTool.cs | 14 ++--- 25 files changed, 216 insertions(+), 182 deletions(-) diff --git a/BizHawk.Client.Common/Api/Classes/MovieApi.cs b/BizHawk.Client.Common/Api/Classes/MovieApi.cs index 0a70b83bf1..63473f9e13 100644 --- a/BizHawk.Client.Common/Api/Classes/MovieApi.cs +++ b/BizHawk.Client.Common/Api/Classes/MovieApi.cs @@ -15,13 +15,13 @@ namespace BizHawk.Client.Common private readonly Action LogCallback; - public bool StartsFromSavestate() => Global.MovieSession.Movie.IsActive && Global.MovieSession.Movie.StartsFromSavestate; + public bool StartsFromSavestate() => Global.MovieSession.Movie.IsActive() && Global.MovieSession.Movie.StartsFromSavestate; - public bool StartsFromSaveram() => Global.MovieSession.Movie.IsActive && Global.MovieSession.Movie.StartsFromSaveRam; + public bool StartsFromSaveram() => Global.MovieSession.Movie.IsActive() && Global.MovieSession.Movie.StartsFromSaveRam; public Dictionary GetInput(int frame) { - if (!Global.MovieSession.Movie.IsActive) + if (Global.MovieSession.Movie.NotActive()) { LogCallback("No movie loaded"); return null; @@ -40,7 +40,10 @@ namespace BizHawk.Client.Common public string GetInputAsMnemonic(int frame) { - if (!Global.MovieSession.Movie.IsActive || frame >= Global.MovieSession.Movie.InputLogLength) return string.Empty; + if (Global.MovieSession.Movie.NotActive() || frame >= Global.MovieSession.Movie.InputLogLength) + { + return string.Empty; + } var lg = Global.MovieSession.LogGeneratorInstance(); lg.SetSource(Global.MovieSession.Movie.GetInputState(frame)); return lg.GenerateLogEntry(); @@ -48,7 +51,11 @@ namespace BizHawk.Client.Common public void Save(string filename = null) { - if (!Global.MovieSession.Movie.IsActive) return; + if (Global.MovieSession.Movie.NotActive()) + { + return; + } + if (!string.IsNullOrEmpty(filename)) { filename += $".{Global.MovieSession.Movie.PreferredExtension}"; @@ -65,7 +72,10 @@ namespace BizHawk.Client.Common public Dictionary GetHeader() { var table = new Dictionary(); - if (!Global.MovieSession.Movie.IsActive) return table; + if (Global.MovieSession.Movie.NotActive()) + { + return table; + } foreach (var kvp in Global.MovieSession.Movie.HeaderEntries) table[kvp.Key] = kvp.Value; return table; } @@ -73,7 +83,11 @@ namespace BizHawk.Client.Common public List GetComments() { var list = new List(Global.MovieSession.Movie.Comments.Count); - if (!Global.MovieSession.Movie.IsActive) return list; + if (Global.MovieSession.Movie.NotActive()) + { + return list; + } + for (var i = 0; i < Global.MovieSession.Movie.Comments.Count; i++) list[i] = Global.MovieSession.Movie.Comments[i]; return list; } @@ -81,7 +95,11 @@ namespace BizHawk.Client.Common public List GetSubtitles() { var list = new List(Global.MovieSession.Movie.Subtitles.Count); - if (!Global.MovieSession.Movie.IsActive) return list; + if (Global.MovieSession.Movie.NotActive()) + { + return list; + } + for (var i = 0; i < Global.MovieSession.Movie.Subtitles.Count; i++) list[i] = Global.MovieSession.Movie.Subtitles[i].ToString(); return list; } @@ -94,17 +112,11 @@ namespace BizHawk.Client.Common public bool GetRerecordCounting() => Global.MovieSession.Movie.IsCountingRerecords; - public bool IsLoaded() => Global.MovieSession.Movie.IsActive; + public bool IsLoaded() => Global.MovieSession.Movie.IsActive(); public double Length() => Global.MovieSession.Movie.FrameCount; - public string Mode() => Global.MovieSession.Movie.IsFinished - ? "FINISHED" - : Global.MovieSession.Movie.IsPlaying - ? "PLAY" - : Global.MovieSession.Movie.IsRecording - ? "RECORD" - : "INACTIVE"; + public string Mode() => Global.MovieSession.Movie.Mode.ToString().ToUpper(); public void SetReadOnly(bool readOnly) => Global.MovieSession.ReadOnly = readOnly; @@ -117,7 +129,11 @@ namespace BizHawk.Client.Common public double GetFps() { var movie = Global.MovieSession.Movie; - if (!movie.IsActive) return default; + if (movie.NotActive()) + { + return default; + } + return new PlatformFrameRates()[ movie.HeaderEntries[HeaderKeys.PLATFORM], movie.HeaderEntries.TryGetValue(HeaderKeys.PAL, out var isPal) && isPal == "1" diff --git a/BizHawk.Client.Common/PathManager.cs b/BizHawk.Client.Common/PathManager.cs index 9ff2d1741e..810dd1c10e 100644 --- a/BizHawk.Client.Common/PathManager.cs +++ b/BizHawk.Client.Common/PathManager.cs @@ -261,7 +261,7 @@ namespace BizHawk.Client.Common public static string SaveRamPath(GameInfo game) { var name = FilesystemSafeName(game); - if (Global.MovieSession.Movie.IsActive) + if (Global.MovieSession.Movie.IsActive()) { name += $".{Path.GetFileNameWithoutExtension(Global.MovieSession.Movie.Filename)}"; } @@ -288,7 +288,7 @@ namespace BizHawk.Client.Common name = FilesystemSafeName(game); } - if (Global.MovieSession.Movie.IsActive) + if (Global.MovieSession.Movie.IsActive()) { name = Path.Combine(name, $"movie-{Path.GetFileNameWithoutExtension(Global.MovieSession.Movie.Filename)}"); } @@ -363,7 +363,7 @@ namespace BizHawk.Client.Common name += $".{Global.Emulator.Attributes().CoreName}"; } - if (Global.MovieSession.Movie.IsActive) + if (Global.MovieSession.Movie.IsActive()) { name += $".{Path.GetFileNameWithoutExtension(Global.MovieSession.Movie.Filename)}"; } diff --git a/BizHawk.Client.Common/SavestateManager.cs b/BizHawk.Client.Common/SavestateManager.cs index dd9b505f51..3b1820f3f4 100644 --- a/BizHawk.Client.Common/SavestateManager.cs +++ b/BizHawk.Client.Common/SavestateManager.cs @@ -65,7 +65,7 @@ namespace BizHawk.Client.Common } } - if (Global.MovieSession.Movie.IsActive) + if (Global.MovieSession.Movie.IsActive()) { bs.PutLump(BinaryStateLump.Input, delegate(TextWriter tw) @@ -86,7 +86,7 @@ namespace BizHawk.Client.Common }); } - if (Global.MovieSession.Movie.IsActive && Global.MovieSession.Movie is TasMovie) + if (Global.MovieSession.Movie.IsActive() && Global.MovieSession.Movie is TasMovie) { bs.PutLump(BinaryStateLump.LagLog, delegate(TextWriter tw) @@ -139,7 +139,7 @@ namespace BizHawk.Client.Common { var succeed = false; - if (Global.MovieSession.Movie.IsActive) + if (Global.MovieSession.Movie.IsActive()) { bl.GetLump(BinaryStateLump.Input, true, tr => succeed = Global.MovieSession.HandleMovieLoadState_HackyStep1(tr)); if (!succeed) @@ -179,7 +179,7 @@ namespace BizHawk.Client.Common Global.UserBag = (Dictionary)ConfigService.LoadWithType(userData); } - if (Global.MovieSession.Movie.IsActive && Global.MovieSession.Movie is TasMovie) + if (Global.MovieSession.Movie.IsActive() && Global.MovieSession.Movie is TasMovie) { bl.GetLump(BinaryStateLump.LagLog, false, delegate(TextReader tr) { diff --git a/BizHawk.Client.Common/movie/MovieSession.cs b/BizHawk.Client.Common/movie/MovieSession.cs index ea24c43fad..68b061b7e9 100644 --- a/BizHawk.Client.Common/movie/MovieSession.cs +++ b/BizHawk.Client.Common/movie/MovieSession.cs @@ -64,7 +64,7 @@ namespace BizHawk.Client.Common { get { - if (Movie.IsActive && !Movie.IsFinished && Global.Emulator.Frame > 0) + if (Movie.IsPlayingOrRecording() && Global.Emulator.Frame > 0) { return Movie.GetInputState(Global.Emulator.Frame - 1); } @@ -77,7 +77,7 @@ namespace BizHawk.Client.Common { get { - if (Movie.IsActive && !Movie.IsFinished && Global.Emulator.Frame > 1) + if (Movie.IsPlayingOrRecording() && Global.Emulator.Frame > 1) { return Movie.GetInputState(Global.Emulator.Frame - 2); } @@ -170,18 +170,18 @@ namespace BizHawk.Client.Common public void StopMovie(bool saveChanges = true) { var message = "Movie "; - if (Movie.IsRecording) + if (Movie.IsRecording()) { message += "recording "; } - else if (Movie.IsPlaying) + else if (Movie.IsPlaying()) { message += "playback "; } message += "stopped."; - if (Movie.IsActive) + if (Movie.IsActive()) { var result = Movie.Stop(saveChanges); if (result) @@ -199,7 +199,7 @@ namespace BizHawk.Client.Common public void HandleMovieSaveState(TextWriter writer) { - if (Movie.IsActive) + if (Movie.IsActive()) { Movie.WriteInputLog(writer); } @@ -207,7 +207,7 @@ namespace BizHawk.Client.Common public void ClearFrame() { - if (Movie.IsPlaying) + if (Movie.IsPlaying()) { Movie.ClearFrame(Global.Emulator.Frame); Output($"Scrubbed input at frame {Global.Emulator.Frame}"); @@ -216,11 +216,11 @@ namespace BizHawk.Client.Common public void HandleMovieOnFrameLoop() { - if (!Movie.IsActive) + if (!Movie.IsActive()) { LatchInputFromPlayer(Global.MovieInputSourceAdapter); } - else if (Movie.IsFinished) + else if (Movie.IsFinished()) { if (Global.Emulator.Frame < Movie.FrameCount) // This scenario can happen from rewinding (suddenly we are back in the movie, so hook back up to the movie { @@ -232,18 +232,18 @@ namespace BizHawk.Client.Common LatchInputFromPlayer(Global.MovieInputSourceAdapter); } } - else if (Movie.IsPlaying) + else if (Movie.IsPlaying()) { LatchInputFromLog(); - if (Movie.IsRecording) // The movie end situation can cause the switch to record mode, in that case we need to capture some input for this frame + if (Movie.IsRecording()) // The movie end situation can cause the switch to record mode, in that case we need to capture some input for this frame { HandleFrameLoopForRecordMode(); } else { // Movie may go into finished mode as a result from latching - if (!Movie.IsFinished) + if (!Movie.IsFinished()) { if (Global.ClientControls.IsPressed("Scrub Input")) { @@ -269,7 +269,7 @@ namespace BizHawk.Client.Common } } } - else if (Movie.IsRecording) + else if (Movie.IsRecording()) { HandleFrameLoopForRecordMode(); } @@ -278,7 +278,7 @@ namespace BizHawk.Client.Common private void HandleFrameLoopForRecordMode() { // we don't want TasMovie to latch user input outside its internal recording mode, so limit it to autohold - if (Movie is TasMovie && Movie.IsPlaying) + if (Movie is TasMovie && Movie.IsPlaying()) { MovieControllerAdapter.LatchSticky(); } @@ -304,12 +304,12 @@ namespace BizHawk.Client.Common if (Movie is TasMovie tasMovie) { tasMovie.GreenzoneCurrentFrame(); - if (tasMovie.IsPlaying && Global.Emulator.Frame >= tasMovie.InputLogLength) + if (tasMovie.IsPlaying() && Global.Emulator.Frame >= tasMovie.InputLogLength) { HandleFrameLoopForRecordMode(); } } - else if (Movie.IsPlaying && !Movie.IsFinished && Global.Emulator.Frame >= Movie.InputLogLength) + else if (Movie.Mode == MovieMode.Play && Global.Emulator.Frame >= Movie.InputLogLength) { HandlePlaybackEnd(); } @@ -324,7 +324,7 @@ namespace BizHawk.Client.Common // TODO: maybe someone who understands more about what's going on here could rename these step1 and step2 into something more descriptive public bool HandleMovieLoadState_HackyStep2(TextReader reader) { - if (!Movie.IsActive) + if (Movie.NotActive()) { return true; } @@ -361,7 +361,7 @@ namespace BizHawk.Client.Common public bool HandleMovieLoadState_HackyStep1(TextReader reader) { - if (!Movie.IsActive) + if (!Movie.IsActive()) { return true; } @@ -375,22 +375,22 @@ namespace BizHawk.Client.Common return false; } - if (Movie.IsRecording) + if (Movie.IsRecording()) { Movie.SwitchToPlay(); } - else if (Movie.IsFinished) + else if (Movie.IsFinished()) { LatchInputFromPlayer(Global.MovieInputSourceAdapter); } } else { - if (Movie.IsFinished) + if (Movie.IsFinished()) { Movie.StartNewRecording(); } - else if (Movie.IsPlaying) + else if (Movie.IsPlaying()) { Movie.SwitchToRecord(); } @@ -401,7 +401,7 @@ namespace BizHawk.Client.Common public void ToggleMultitrack() { - if (Movie.IsActive) + if (Movie.IsActive()) { if (Global.Config.VBAStyleMovieLoadState) { diff --git a/BizHawk.Client.Common/movie/bk2/Bk2Movie.InputLog.cs b/BizHawk.Client.Common/movie/bk2/Bk2Movie.InputLog.cs index d02dfbae9b..bcbbdfe705 100644 --- a/BizHawk.Client.Common/movie/bk2/Bk2Movie.InputLog.cs +++ b/BizHawk.Client.Common/movie/bk2/Bk2Movie.InputLog.cs @@ -245,7 +245,7 @@ namespace BizHawk.Client.Common if (Log.Count < stateFrame) { - if (IsFinished) + if (this.IsFinished()) { return true; } diff --git a/BizHawk.Client.Common/movie/bk2/Bk2Movie.ModeApi.cs b/BizHawk.Client.Common/movie/bk2/Bk2Movie.ModeApi.cs index 35cab9ac2b..76c6c706e7 100644 --- a/BizHawk.Client.Common/movie/bk2/Bk2Movie.ModeApi.cs +++ b/BizHawk.Client.Common/movie/bk2/Bk2Movie.ModeApi.cs @@ -4,20 +4,7 @@ namespace BizHawk.Client.Common { public partial class Bk2Movie { - protected enum MovieMode - { - Inactive, Play, Record, Finished - } - - protected MovieMode Mode { get; set; } = MovieMode.Inactive; - - public bool IsActive => Mode != MovieMode.Inactive; - - public bool IsPlaying => Mode == MovieMode.Play || Mode == MovieMode.Finished; - - public bool IsRecording => Mode == MovieMode.Record; - - public bool IsFinished => Mode == MovieMode.Finished; + public MovieMode Mode { get; protected set; } = MovieMode.Inactive; public virtual void StartNewRecording() { @@ -51,7 +38,7 @@ namespace BizHawk.Client.Common bool saved = false; if (saveChanges) { - if (Mode == MovieMode.Record || (IsActive && Changes)) + if (Mode == MovieMode.Record || (this.IsActive() && Changes)) { Save(); saved = true; diff --git a/BizHawk.Client.Common/movie/interfaces/IMovie.cs b/BizHawk.Client.Common/movie/interfaces/IMovie.cs index d951ce2871..fe1f64190e 100644 --- a/BizHawk.Client.Common/movie/interfaces/IMovie.cs +++ b/BizHawk.Client.Common/movie/interfaces/IMovie.cs @@ -6,17 +6,42 @@ using BizHawk.Emulation.Common; namespace BizHawk.Client.Common { + public enum MovieMode + { + /// + /// There is no movie loaded + /// + Inactive, + + /// + /// The movie is in playback mode + /// + Play, + + /// + /// The movie is currently recording + /// + Record, + + /// + /// The movie has played past the end, but is still loaded in memory + /// + Finished + } + // TODO: message callback / event handler // TODO: consider other event handlers, switching modes? public interface IMovie { #region Status + /// + /// Gets the current movie mode + /// + MovieMode Mode { get; } + bool IsCountingRerecords { get; set; } - bool IsActive { get; } - bool IsPlaying { get; } - bool IsRecording { get; } - bool IsFinished { get; } + bool Changes { get; } #endregion @@ -218,4 +243,14 @@ namespace BizHawk.Client.Common #endregion } + + public static class MovieExtensions + { + public static bool IsActive(this IMovie movie) => movie.Mode != MovieMode.Inactive; + public static bool NotActive(this IMovie movie) => movie.Mode == MovieMode.Inactive; + public static bool IsPlaying(this IMovie movie) => movie.Mode == MovieMode.Play || movie.Mode == MovieMode.Finished; + public static bool IsRecording(this IMovie movie) => movie.Mode == MovieMode.Record; + public static bool IsFinished(this IMovie movie) => movie.Mode == MovieMode.Finished; + public static bool IsPlayingOrRecording(this IMovie movie) => movie.Mode == MovieMode.Play && movie.Mode == MovieMode.Record; + } } diff --git a/BizHawk.Client.Common/movie/tasproj/TasMovie.Editing.cs b/BizHawk.Client.Common/movie/tasproj/TasMovie.Editing.cs index 13396678f7..70fbd444af 100644 --- a/BizHawk.Client.Common/movie/tasproj/TasMovie.Editing.cs +++ b/BizHawk.Client.Common/movie/tasproj/TasMovie.Editing.cs @@ -22,7 +22,7 @@ namespace BizHawk.Client.Common TasLagLog.RemoveFrom(frame); TasLagLog[frame] = Global.Emulator.AsInputPollable().IsLagFrame; - if (IsRecording) + if (this.IsRecording()) { TasStateManager.Invalidate(frame + 1); } diff --git a/BizHawk.Client.Common/movie/tasproj/TasMovie.cs b/BizHawk.Client.Common/movie/tasproj/TasMovie.cs index bc6c11d08b..766ee99768 100644 --- a/BizHawk.Client.Common/movie/tasproj/TasMovie.cs +++ b/BizHawk.Client.Common/movie/tasproj/TasMovie.cs @@ -115,12 +115,12 @@ namespace BizHawk.Client.Common public override void SwitchToPlay() { - Mode = Moviemode.Play; + Mode = MovieMode.Play; } public override void SwitchToRecord() { - Mode = Moviemode.Record; + Mode = MovieMode.Record; } /// @@ -379,7 +379,7 @@ namespace BizHawk.Client.Common Truncate(Log.Count); } - Mode = Moviemode.Finished; + Mode = MovieMode.Finished; } if (IsCountingRerecords) diff --git a/BizHawk.Client.Common/rewind/Rewinder.cs b/BizHawk.Client.Common/rewind/Rewinder.cs index c1343f32a8..0122e875d1 100644 --- a/BizHawk.Client.Common/rewind/Rewinder.cs +++ b/BizHawk.Client.Common/rewind/Rewinder.cs @@ -313,7 +313,7 @@ namespace BizHawk.Client.Common // each one records how to get back to the previous state, once we've gone back to // the second item, it's already resulted in the first state being loaded. The // first item is just a junk entry with the initial value of _lastState (0 bytes). - if (_rewindBuffer.Count <= 1 || (Global.MovieSession.Movie.IsActive && Global.MovieSession.Movie.InputLogLength == 0)) + if (_rewindBuffer.Count <= 1 || (Global.MovieSession.Movie.IsActive() && Global.MovieSession.Movie.InputLogLength == 0)) { break; } diff --git a/BizHawk.Client.EmuHawk/DisplayManager/OSDManager.cs b/BizHawk.Client.EmuHawk/DisplayManager/OSDManager.cs index 1f553e0d3f..159b9b74c2 100644 --- a/BizHawk.Client.EmuHawk/DisplayManager/OSDManager.cs +++ b/BizHawk.Client.EmuHawk/DisplayManager/OSDManager.cs @@ -68,7 +68,7 @@ namespace BizHawk.Client.EmuHawk private string MakeFrameCounter() { - if (Global.MovieSession.Movie.IsFinished) + if (Global.MovieSession.Movie.IsFinished()) { var sb = new StringBuilder(); sb @@ -79,7 +79,7 @@ namespace BizHawk.Client.EmuHawk return sb.ToString(); } - if (Global.MovieSession.Movie.IsPlaying) + if (Global.MovieSession.Movie.IsPlaying()) { var sb = new StringBuilder(); sb @@ -188,7 +188,7 @@ namespace BizHawk.Client.EmuHawk public string InputPrevious() { - if (Global.MovieSession.Movie.IsActive && !Global.MovieSession.Movie.IsFinished) + if (Global.MovieSession.Movie.IsPlayingOrRecording()) { var lg = Global.MovieSession.LogGeneratorInstance(); var state = Global.MovieSession.Movie.GetInputState(Global.Emulator.Frame - 1); @@ -204,11 +204,9 @@ namespace BizHawk.Client.EmuHawk public string InputStrOrAll() { - var m = (Global.MovieSession.Movie.IsActive && - !Global.MovieSession.Movie.IsFinished && - Global.Emulator.Frame > 0) ? - Global.MovieSession.Movie.GetInputState(Global.Emulator.Frame - 1) : - Global.MovieSession.MovieControllerInstance(); + var m = Global.MovieSession.Movie.IsPlayingOrRecording() && Global.Emulator.Frame > 0 + ? Global.MovieSession.Movie.GetInputState(Global.Emulator.Frame - 1) + : Global.MovieSession.MovieControllerInstance(); var lg = Global.MovieSession.LogGeneratorInstance(); @@ -225,11 +223,11 @@ namespace BizHawk.Client.EmuHawk public string MakeIntersectImmediatePrevious() { - if (Global.MovieSession.Movie.IsActive) + if (Global.MovieSession.Movie.IsActive()) { - var m = Global.MovieSession.Movie.IsActive && !Global.MovieSession.Movie.IsFinished ? - Global.MovieSession.Movie.GetInputState(Global.Emulator.Frame - 1) : - Global.MovieSession.MovieControllerInstance(); + var m = Global.MovieSession.Movie.IsPlayingOrRecording() + ? Global.MovieSession.Movie.GetInputState(Global.Emulator.Frame - 1) + : Global.MovieSession.MovieControllerInstance(); var lg = Global.MovieSession.LogGeneratorInstance(); lg.SetSource(Global.AutofireStickyXORAdapter.And(m)); @@ -241,7 +239,7 @@ namespace BizHawk.Client.EmuHawk public string MakeRerecordCount() { - return Global.MovieSession.Movie.IsActive + return Global.MovieSession.Movie.IsActive() ? Global.MovieSession.Movie.Rerecords.ToString() : ""; } @@ -270,8 +268,8 @@ namespace BizHawk.Client.EmuHawk if (Global.Config.DisplayInput && !Global.Game.IsNullInstance()) { - if ((Global.MovieSession.Movie.IsPlaying && !Global.MovieSession.Movie.IsFinished) - || (Global.MovieSession.Movie.IsFinished && Global.Emulator.Frame == Global.MovieSession.Movie.InputLogLength)) // Account for the last frame of the movie, the movie state is immediately "Finished" here but we still want to show the input + if (Global.MovieSession.Movie.Mode == MovieMode.Play + || (Global.MovieSession.Movie.IsFinished() && Global.Emulator.Frame == Global.MovieSession.Movie.InputLogLength)) // Account for the last frame of the movie, the movie state is immediately "Finished" here but we still want to show the input { var input = InputStrMovie(); var point = GetCoordinates(g, Global.Config.InputDisplay, input); @@ -366,7 +364,7 @@ namespace BizHawk.Client.EmuHawk g.DrawString(message, MessageFont, Color.White, point.X, point.Y); } - if (Global.MovieSession.Movie.IsActive && Global.Config.DisplaySubtitles) + if (Global.MovieSession.Movie.IsActive() && Global.Config.DisplaySubtitles) { var subList = Global.MovieSession.Movie.Subtitles.GetSubtitles(Global.Emulator.Frame); diff --git a/BizHawk.Client.EmuHawk/MainForm.Events.cs b/BizHawk.Client.EmuHawk/MainForm.Events.cs index 73d1de70bc..8939424c48 100644 --- a/BizHawk.Client.EmuHawk/MainForm.Events.cs +++ b/BizHawk.Client.EmuHawk/MainForm.Events.cs @@ -237,12 +237,12 @@ namespace BizHawk.Client.EmuHawk private void MovieSubMenu_DropDownOpened(object sender, EventArgs e) { FullMovieLoadstatesMenuItem.Enabled = !MovieSession.MultiTrack.IsActive; - StopMovieWithoutSavingMenuItem.Enabled = MovieSession.Movie.IsActive && MovieSession.Movie.Changes; + StopMovieWithoutSavingMenuItem.Enabled = MovieSession.Movie.IsActive() && MovieSession.Movie.Changes; StopMovieMenuItem.Enabled = PlayFromBeginningMenuItem.Enabled = SaveMovieMenuItem.Enabled = SaveMovieAsMenuItem.Enabled - = MovieSession.Movie.IsActive; + = MovieSession.Movie.IsActive(); ReadonlyMenuItem.Checked = MovieSession.ReadOnly; AutomaticallyBackupMoviesMenuItem.Checked = Config.EnableBackupMovies; @@ -683,11 +683,11 @@ namespace BizHawk.Client.EmuHawk { PauseMenuItem.Checked = _didMenuPause ? _wasPaused : EmulatorPaused; - SoftResetMenuItem.Enabled = Emulator.ControllerDefinition.BoolButtons.Contains("Reset") && - (!MovieSession.Movie.IsPlaying || MovieSession.Movie.IsFinished); + SoftResetMenuItem.Enabled = Emulator.ControllerDefinition.BoolButtons.Contains("Reset") + && MovieSession.Movie.Mode != MovieMode.Play; - HardResetMenuItem.Enabled = Emulator.ControllerDefinition.BoolButtons.Contains("Power") && - (!MovieSession.Movie.IsPlaying || MovieSession.Movie.IsFinished); + HardResetMenuItem.Enabled = Emulator.ControllerDefinition.BoolButtons.Contains("Power") + && MovieSession.Movie.Mode != MovieMode.Play;; PauseMenuItem.ShortcutKeyDisplayString = Config.HotkeyBindings["Pause"].Bindings; RebootCoreMenuItem.ShortcutKeyDisplayString = Config.HotkeyBindings["Reboot Core"].Bindings; @@ -1543,10 +1543,10 @@ namespace BizHawk.Client.EmuHawk NESSoundChannelsMenuItem.Enabled = Tools.IsAvailable(); MovieSettingsMenuItem.Enabled = (Emulator is NES || Emulator is SubNESHawk) - && !MovieSession.Movie.IsActive; + && !MovieSession.Movie.IsActive(); NesControllerSettingsMenuItem.Enabled = Tools.IsAvailable() - && !MovieSession.Movie.IsActive; + && !MovieSession.Movie.IsActive(); barcodeReaderToolStripMenuItem.Enabled = ServiceInjector.IsAvailable(Emulator.ServiceProvider, typeof(BarcodeEntry)); @@ -1633,7 +1633,7 @@ namespace BizHawk.Client.EmuHawk private void FdsEjectDiskMenuItem_Click(object sender, EventArgs e) { - if (!MovieSession.Movie.IsPlaying || MovieSession.Movie.IsFinished) + if (MovieSession.Movie.Mode != MovieMode.Play) { ClickyVirtualPadController.Click("FDS Eject"); AddOnScreenMessage("FDS disk ejected."); @@ -1645,7 +1645,7 @@ namespace BizHawk.Client.EmuHawk if (Emulator is NES nes && nes.IsVS || Emulator is SubNESHawk sub && sub.IsVs) { - if (!MovieSession.Movie.IsPlaying || MovieSession.Movie.IsFinished) + if (MovieSession.Movie.Mode != MovieMode.Play) { ClickyVirtualPadController.Click("Insert Coin P1"); AddOnScreenMessage("P1 Coin Inserted"); @@ -1658,7 +1658,7 @@ namespace BizHawk.Client.EmuHawk if (Emulator is NES nes && nes.IsVS || Emulator is SubNESHawk sub && sub.IsVs) { - if (!MovieSession.Movie.IsPlaying || MovieSession.Movie.IsFinished) + if (MovieSession.Movie.Mode != MovieMode.Play) { ClickyVirtualPadController.Click("Insert Coin P2"); AddOnScreenMessage("P2 Coin Inserted"); @@ -1671,7 +1671,7 @@ namespace BizHawk.Client.EmuHawk if (Emulator is NES nes && nes.IsVS || Emulator is SubNESHawk sub && sub.IsVs) { - if (!MovieSession.Movie.IsPlaying || MovieSession.Movie.IsFinished) + if (MovieSession.Movie.Mode != MovieMode.Play) { ClickyVirtualPadController.Click("Service Switch"); AddOnScreenMessage("Service Switch Pressed"); @@ -1725,8 +1725,7 @@ namespace BizHawk.Client.EmuHawk { var s = ((PCEngine)Emulator).GetSettings(); - PceControllerSettingsMenuItem.Enabled = !MovieSession.Movie.IsActive; - + PceControllerSettingsMenuItem.Enabled = MovieSession.Movie.NotActive(); PCEAlwaysPerformSpriteLimitMenuItem.Checked = s.SpriteLimit; PCEAlwaysEqualizeVolumesMenuItem.Checked = s.EqualizeVolume; PCEArcadeCardRewindEnableMenuItem.Checked = s.ArcadeCardRewindHack; @@ -2079,8 +2078,9 @@ namespace BizHawk.Client.EmuHawk private void A7800SubMenu_DropDownOpened(object sender, EventArgs e) { - A7800ControllerSettingsMenuItem.Enabled = !MovieSession.Movie.IsActive; - A7800FilterSettingsMenuItem.Enabled = !MovieSession.Movie.IsActive; + A7800ControllerSettingsMenuItem.Enabled + = A7800FilterSettingsMenuItem.Enabled + = MovieSession.Movie.NotActive(); } private void A7800ControllerSettingsToolStripMenuItem_Click(object sender, EventArgs e) @@ -2180,7 +2180,7 @@ namespace BizHawk.Client.EmuHawk private void PSXSubMenu_DropDownOpened(object sender, EventArgs e) { - PSXControllerSettingsMenuItem.Enabled = !MovieSession.Movie.IsActive; + PSXControllerSettingsMenuItem.Enabled = MovieSession.Movie.NotActive(); } private void PSXControllerSettingsMenuItem_Click(object sender, EventArgs e) @@ -2230,7 +2230,7 @@ namespace BizHawk.Client.EmuHawk SnesGBInSGBMenuItem.Visible = false; } - SNESControllerConfigurationMenuItem.Enabled = !MovieSession.Movie.IsActive; + SNESControllerConfigurationMenuItem.Enabled = MovieSession.Movie.NotActive(); } private void SNESControllerConfigurationMenuItem_Click(object sender, EventArgs e) @@ -2280,7 +2280,7 @@ namespace BizHawk.Client.EmuHawk var ss = ((ColecoVision)Emulator).GetSyncSettings(); ColecoSkipBiosMenuItem.Checked = ss.SkipBiosIntro; ColecoUseSGMMenuItem.Checked = ss.UseSGM; - ColecoControllerSettingsMenuItem.Enabled = !MovieSession.Movie.IsActive; + ColecoControllerSettingsMenuItem.Enabled = MovieSession.Movie.NotActive(); } private void ColecoSkipBiosMenuItem_Click(object sender, EventArgs e) @@ -2314,8 +2314,8 @@ namespace BizHawk.Client.EmuHawk { N64PluginSettingsMenuItem.Enabled = N64ControllerSettingsMenuItem.Enabled = - N64ExpansionSlotMenuItem.Enabled = - !MovieSession.Movie.IsActive; + N64ExpansionSlotMenuItem.Enabled = + MovieSession.Movie.NotActive(); N64CircularAnalogRangeMenuItem.Checked = Config.N64UseCircularAnalogConstraint; @@ -2568,7 +2568,7 @@ namespace BizHawk.Client.EmuHawk private void IntVSubMenu_DropDownOpened(object sender, EventArgs e) { - IntVControllerSettingsMenuItem.Enabled = !MovieSession.Movie.IsActive; + IntVControllerSettingsMenuItem.Enabled = MovieSession.Movie.NotActive(); } private void IntVControllerSettingsMenuItem_Click(object sender, EventArgs e) @@ -2959,7 +2959,7 @@ namespace BizHawk.Client.EmuHawk RecordMovieContextMenuItem.Visible = PlayMovieContextMenuItem.Visible = LoadLastMovieContextMenuItem.Visible = - !Emulator.IsNull() && !MovieSession.Movie.IsActive; + !Emulator.IsNull() && MovieSession.Movie.NotActive(); RestartMovieContextMenuItem.Visible = StopMovieContextMenuItem.Visible = @@ -2967,13 +2967,13 @@ namespace BizHawk.Client.EmuHawk ViewCommentsContextMenuItem.Visible = SaveMovieContextMenuItem.Visible = SaveMovieAsContextMenuItem.Visible = - MovieSession.Movie.IsActive; + MovieSession.Movie.IsActive(); - BackupMovieContextMenuItem.Visible = MovieSession.Movie.IsActive; + BackupMovieContextMenuItem.Visible = MovieSession.Movie.IsActive(); - StopNoSaveContextMenuItem.Visible = MovieSession.Movie.IsActive && MovieSession.Movie.Changes; + StopNoSaveContextMenuItem.Visible = MovieSession.Movie.IsActive() && MovieSession.Movie.Changes; - AddSubtitleContextMenuItem.Visible = !Emulator.IsNull() && MovieSession.Movie.IsActive && !MovieSession.ReadOnly; + AddSubtitleContextMenuItem.Visible = !Emulator.IsNull() && MovieSession.Movie.IsActive() && !MovieSession.ReadOnly; ConfigContextMenuItem.Visible = _inFullscreen; @@ -2984,7 +2984,7 @@ namespace BizHawk.Client.EmuHawk LoadLastRomContextMenuItem.Enabled = !Config.RecentRoms.Empty; LoadLastMovieContextMenuItem.Enabled = !Config.RecentMovies.Empty; - if (MovieSession.Movie.IsActive) + if (MovieSession.Movie.IsActive()) { if (MovieSession.ReadOnly) { @@ -3084,7 +3084,7 @@ namespace BizHawk.Client.EmuHawk private void ViewSubtitlesContextMenuItem_Click(object sender, EventArgs e) { - if (MovieSession.Movie.IsActive) + if (MovieSession.Movie.IsActive()) { using var form = new EditSubtitlesForm { ReadOnly = MovieSession.ReadOnly }; form.GetMovie(MovieSession.Movie); @@ -3130,7 +3130,7 @@ namespace BizHawk.Client.EmuHawk private void ViewCommentsContextMenuItem_Click(object sender, EventArgs e) { - if (MovieSession.Movie.IsActive) + if (MovieSession.Movie.IsActive()) { using var form = new EditCommentsForm(); form.GetMovie(MovieSession.Movie); @@ -3237,7 +3237,7 @@ namespace BizHawk.Client.EmuHawk private void LinkConnectStatusBarButton_Click(object sender, EventArgs e) { // toggle Link status (only outside of a movie session) - if (!MovieSession.Movie.IsPlaying || MovieSession.Movie.IsFinished) + if (MovieSession.Movie.Mode != MovieMode.Play) { Emulator.AsLinkable().LinkConnected ^= true; Console.WriteLine("Cable connect status to {0}", Emulator.AsLinkable().LinkConnected); diff --git a/BizHawk.Client.EmuHawk/MainForm.Movie.cs b/BizHawk.Client.EmuHawk/MainForm.Movie.cs index 9ec784a65a..cd860fdf41 100644 --- a/BizHawk.Client.EmuHawk/MainForm.Movie.cs +++ b/BizHawk.Client.EmuHawk/MainForm.Movie.cs @@ -14,7 +14,7 @@ namespace BizHawk.Client.EmuHawk { // SuuperW: Check changes. adelikat: this could break bk2 movies // TODO: Clean up the saving process - if (movie.IsActive && (movie.Changes || !(movie is TasMovie))) + if (movie.IsActive() && (movie.Changes || !(movie is TasMovie))) { movie.Save(); } @@ -98,19 +98,19 @@ namespace BizHawk.Client.EmuHawk public void SetMainformMovieInfo() { - if (MovieSession.Movie.IsPlaying) + if (MovieSession.Movie.IsPlaying()) { PlayRecordStatusButton.Image = Properties.Resources.Play; PlayRecordStatusButton.ToolTipText = "Movie is in playback mode"; PlayRecordStatusButton.Visible = true; } - else if (MovieSession.Movie.IsRecording) + else if (MovieSession.Movie.IsRecording()) { PlayRecordStatusButton.Image = Properties.Resources.RecordHS; PlayRecordStatusButton.ToolTipText = "Movie is in record mode"; PlayRecordStatusButton.Visible = true; } - else if (!MovieSession.Movie.IsActive) + else if (!MovieSession.Movie.IsActive()) { PlayRecordStatusButton.Image = Properties.Resources.Blank; PlayRecordStatusButton.ToolTipText = "No movie is active"; @@ -129,7 +129,7 @@ namespace BizHawk.Client.EmuHawk } else { - if (MovieSession.Movie.IsActive) + if (MovieSession.Movie.IsActive()) { StartNewMovie(MovieSession.Movie, false); AddOnScreenMessage("Replaying movie file in read-only mode"); diff --git a/BizHawk.Client.EmuHawk/MainForm.cs b/BizHawk.Client.EmuHawk/MainForm.cs index 92ed88e133..655ccf02e4 100644 --- a/BizHawk.Client.EmuHawk/MainForm.cs +++ b/BizHawk.Client.EmuHawk/MainForm.cs @@ -1568,7 +1568,7 @@ namespace BizHawk.Client.EmuHawk { str += $" - {Game.Name}"; - if (MovieSession.Movie.IsActive) + if (MovieSession.Movie.IsActive()) { str += $" - {Path.GetFileName(MovieSession.Movie.Filename)}"; } @@ -2388,7 +2388,7 @@ namespace BizHawk.Client.EmuHawk public void PutCoreSyncSettings(object o) { var settable = new SettingsAdapter(Emulator); - if (MovieSession.Movie.IsActive) + if (MovieSession.Movie.IsActive()) { AddOnScreenMessage("Attempt to change sync-relevant settings while recording BLOCKED."); } @@ -2485,7 +2485,7 @@ namespace BizHawk.Client.EmuHawk // is it enough to run this for one frame? maybe.. if (Emulator.ControllerDefinition.BoolButtons.Contains("Reset")) { - if (!MovieSession.Movie.IsPlaying || MovieSession.Movie.IsFinished) + if (MovieSession.Movie.Mode != MovieMode.Play) { ClickyVirtualPadController.Click("Reset"); AddOnScreenMessage("Reset button pressed."); @@ -2498,7 +2498,7 @@ namespace BizHawk.Client.EmuHawk // is it enough to run this for one frame? maybe.. if (Emulator.ControllerDefinition.BoolButtons.Contains("Power")) { - if (!MovieSession.Movie.IsPlaying || MovieSession.Movie.IsFinished) + if (MovieSession.Movie.Mode != MovieMode.Play) { ClickyVirtualPadController.Click("Power"); AddOnScreenMessage("Power button pressed."); @@ -2671,7 +2671,7 @@ namespace BizHawk.Client.EmuHawk private void SaveMovie() { - if (MovieSession.Movie.IsActive) + if (MovieSession.Movie.IsActive()) { MovieSession.Movie.Save(); AddOnScreenMessage($"{MovieSession.Movie.Filename} saved."); @@ -2780,7 +2780,7 @@ namespace BizHawk.Client.EmuHawk { if (Emulator.ControllerDefinition.BoolButtons.Contains(button)) { - if (!MovieSession.Movie.IsPlaying || MovieSession.Movie.IsFinished) + if (MovieSession.Movie.Mode != MovieMode.Play) { ClickyVirtualPadController.Click(button); AddOnScreenMessage(msg); @@ -3059,7 +3059,7 @@ namespace BizHawk.Client.EmuHawk MovieSession.Movie.SwitchToRecord(); } - if (isRewinding && !IsRewindSlave && MovieSession.Movie.IsRecording) + if (isRewinding && !IsRewindSlave && MovieSession.Movie.IsRecording()) { MovieSession.Movie.Truncate(Global.Emulator.Frame); } @@ -3930,7 +3930,7 @@ namespace BizHawk.Client.EmuHawk Config.PutCoreSettings(settable.GetSettings(), t); } - if (settable.HasSyncSettings && !MovieSession.Movie.IsActive) + if (settable.HasSyncSettings && !MovieSession.Movie.IsActive()) { // don't trample config with loaded-from-movie settings Config.PutCoreSyncSettings(settable.GetSyncSettings(), t); @@ -3970,7 +3970,7 @@ namespace BizHawk.Client.EmuHawk StopAv(); CommitCoreSettingsToConfig(); - if (MovieSession.Movie.IsActive) // Note: this must be called after CommitCoreSettingsToConfig() + if (MovieSession.Movie.IsActive()) // Note: this must be called after CommitCoreSettingsToConfig() { StopMovie(); } @@ -4120,7 +4120,7 @@ namespace BizHawk.Client.EmuHawk UpdateToolsLoadstate(); AutoFireController.ClearStarts(); - if (!IsRewindSlave && MovieSession.Movie.IsActive) + if (!IsRewindSlave && MovieSession.Movie.IsActive()) { ClearRewindData(); } @@ -4417,7 +4417,7 @@ namespace BizHawk.Client.EmuHawk } else { - if (MovieSession.Movie.IsActive) + if (MovieSession.Movie.IsActive()) { MovieSession.ReadOnly ^= true; AddOnScreenMessage(MovieSession.ReadOnly ? "Movie read-only mode" : "Movie read+write mode"); @@ -4535,7 +4535,7 @@ namespace BizHawk.Client.EmuHawk { runFrame = Rewinder.Rewind(1) && Emulator.Frame > 1; - if (runFrame && MovieSession.Movie.IsRecording) + if (runFrame && MovieSession.Movie.IsRecording()) { MovieSession.Movie.SwitchToPlay(); returnToRecording = true; diff --git a/BizHawk.Client.EmuHawk/Program.cs b/BizHawk.Client.EmuHawk/Program.cs index 8afe2c5578..c4b6bc10ec 100644 --- a/BizHawk.Client.EmuHawk/Program.cs +++ b/BizHawk.Client.EmuHawk/Program.cs @@ -223,27 +223,25 @@ namespace BizHawk.Client.EmuHawk } else { - using (var mf = new MainForm(args)) + using var mf = new MainForm(args); + var title = mf.Text; + mf.Show(); + mf.Text = title; + try { - var title = mf.Text; - mf.Show(); - mf.Text = title; - try + GlobalWin.ExitCode = mf.ProgramRunLoop(); + } + catch (Exception e) when (Global.MovieSession.Movie.IsActive() && !(Debugger.IsAttached || VersionInfo.DeveloperBuild)) + { + var result = MessageBox.Show( + "EmuHawk has thrown a fatal exception and is about to close.\nA movie has been detected. Would you like to try to save?\n(Note: Depending on what caused this error, this may or may not succeed)", + $"Fatal error: {e.GetType().Name}", + MessageBoxButtons.YesNo, + MessageBoxIcon.Exclamation + ); + if (result == DialogResult.Yes) { - GlobalWin.ExitCode = mf.ProgramRunLoop(); - } - catch (Exception e) when (Global.MovieSession.Movie.IsActive && !(Debugger.IsAttached || VersionInfo.DeveloperBuild)) - { - var result = MessageBox.Show( - "EmuHawk has thrown a fatal exception and is about to close.\nA movie has been detected. Would you like to try to save?\n(Note: Depending on what caused this error, this may or may not succeed)", - $"Fatal error: {e.GetType().Name}", - MessageBoxButtons.YesNo, - MessageBoxIcon.Exclamation - ); - if (result == DialogResult.Yes) - { - Global.MovieSession.Movie.Save(); - } + Global.MovieSession.Movie.Save(); } } } diff --git a/BizHawk.Client.EmuHawk/config/GB/GBPrefControl.cs b/BizHawk.Client.EmuHawk/config/GB/GBPrefControl.cs index 0e52e66db2..31130324c9 100644 --- a/BizHawk.Client.EmuHawk/config/GB/GBPrefControl.cs +++ b/BizHawk.Client.EmuHawk/config/GB/GBPrefControl.cs @@ -28,7 +28,7 @@ namespace BizHawk.Client.EmuHawk _s = s ?? new Gameboy.GambatteSettings(); _ss = ss ?? new Gameboy.GambatteSyncSettings(); propertyGrid1.SelectedObject = _ss; - propertyGrid1.Enabled = !Global.MovieSession.Movie.IsActive; + propertyGrid1.Enabled = Global.MovieSession.Movie.NotActive(); checkBoxMuted.Checked = _s.Muted; cbDisplayBG.Checked = _s.DisplayBG; cbDisplayOBJ.Checked = _s.DisplayOBJ; @@ -43,8 +43,8 @@ namespace BizHawk.Client.EmuHawk private void ButtonDefaults_Click(object sender, EventArgs e) { - PutSettings(null, Global.MovieSession.Movie.IsActive ? _ss : null); - if (!Global.MovieSession.Movie.IsActive) + PutSettings(null, Global.MovieSession.Movie.IsActive() ? _ss : null); + if (Global.MovieSession.Movie.NotActive()) { SyncSettingsChanged = true; } diff --git a/BizHawk.Client.EmuHawk/config/GenericCoreConfig.cs b/BizHawk.Client.EmuHawk/config/GenericCoreConfig.cs index d4c6b63e13..06f9338b42 100644 --- a/BizHawk.Client.EmuHawk/config/GenericCoreConfig.cs +++ b/BizHawk.Client.EmuHawk/config/GenericCoreConfig.cs @@ -52,7 +52,7 @@ namespace BizHawk.Client.EmuHawk tabControl1.TabPages.Remove(tabPage2); } - if (Global.MovieSession.Movie.IsActive) + if (Global.MovieSession.Movie.IsActive()) { propertyGrid2.Enabled = false; // disable changes to sync setting when movie, so as not to confuse user } diff --git a/BizHawk.Client.EmuHawk/tools/BasicBot/BasicBot.cs b/BizHawk.Client.EmuHawk/tools/BasicBot/BasicBot.cs index 6df7321e47..29bf767806 100644 --- a/BizHawk.Client.EmuHawk/tools/BasicBot/BasicBot.cs +++ b/BizHawk.Client.EmuHawk/tools/BasicBot/BasicBot.cs @@ -1099,7 +1099,7 @@ namespace BizHawk.Client.EmuHawk GoalGroupBox.Enabled = false; _currentBotAttempt = new BotAttempt { Attempt = Attempts }; - if (Global.MovieSession.Movie.IsRecording) + if (Global.MovieSession.Movie.IsRecording()) { _oldCountingSetting = Global.MovieSession.Movie.IsCountingRerecords; Global.MovieSession.Movie.IsCountingRerecords = false; @@ -1156,7 +1156,7 @@ namespace BizHawk.Client.EmuHawk _currentBotAttempt = null; GoalGroupBox.Enabled = true; - if (Global.MovieSession.Movie.IsRecording) + if (Global.MovieSession.Movie.IsRecording()) { Global.MovieSession.Movie.IsCountingRerecords = _oldCountingSetting; } diff --git a/BizHawk.Client.EmuHawk/tools/Macros/MacroInput.cs b/BizHawk.Client.EmuHawk/tools/Macros/MacroInput.cs index 5f5c434c64..f191778787 100644 --- a/BizHawk.Client.EmuHawk/tools/Macros/MacroInput.cs +++ b/BizHawk.Client.EmuHawk/tools/Macros/MacroInput.cs @@ -39,7 +39,7 @@ namespace BizHawk.Client.EmuHawk { // Movie recording must be active (check TAStudio because opening a project re-loads the ROM, // which resets tools before the movie session becomes active) - if (!Global.MovieSession.Movie.IsActive && !GlobalWin.Tools.IsLoaded()) + if (!Global.MovieSession.Movie.IsActive() && !GlobalWin.Tools.IsLoaded()) { MessageBox.Show("In order to use this tool you must be recording a movie."); Close(); diff --git a/BizHawk.Client.EmuHawk/tools/TAStudio/PlaybackBox.cs b/BizHawk.Client.EmuHawk/tools/TAStudio/PlaybackBox.cs index fba4cb4287..acd7cd3164 100644 --- a/BizHawk.Client.EmuHawk/tools/TAStudio/PlaybackBox.cs +++ b/BizHawk.Client.EmuHawk/tools/TAStudio/PlaybackBox.cs @@ -40,7 +40,7 @@ namespace BizHawk.Client.EmuHawk [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] public bool RecordingMode { - get => Global.MovieSession.Movie.IsRecording; + get => Global.MovieSession.Movie.IsRecording(); set { RecordingModeCheckbox.Checked = value; diff --git a/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.IControlMainForm.cs b/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.IControlMainForm.cs index e75103c97d..4455f9a7f6 100644 --- a/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.IControlMainForm.cs +++ b/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.IControlMainForm.cs @@ -1,4 +1,6 @@ -namespace BizHawk.Client.EmuHawk +using BizHawk.Client.Common; + +namespace BizHawk.Client.EmuHawk { public partial class TAStudio : IControlMainform { @@ -60,11 +62,11 @@ public void ToggleReadOnly() { - if (CurrentTasMovie.IsPlaying) + if (CurrentTasMovie.IsPlaying()) { TastudioRecordMode(); } - else if (CurrentTasMovie.IsRecording) + else if (CurrentTasMovie.IsRecording()) { TastudioPlayMode(); } diff --git a/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.ListView.cs b/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.ListView.cs index a8118205c0..720b10d9ff 100644 --- a/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.ListView.cs +++ b/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.ListView.cs @@ -91,7 +91,7 @@ namespace BizHawk.Client.EmuHawk Mainform.PauseOnFrame = frame.Value; int? diff = Mainform.PauseOnFrame - _seekStartFrame; - WasRecording = CurrentTasMovie.IsRecording || WasRecording; + WasRecording = CurrentTasMovie.IsRecording() || WasRecording; TastudioPlayMode(); // suspend rec mode until seek ends, to allow mouse editing Mainform.UnpauseEmulator(); @@ -541,7 +541,7 @@ namespace BizHawk.Client.EmuHawk int frame = TasView.CurrentCell.RowIndex.Value; string buttonName = TasView.CurrentCell.Column.Name; - WasRecording = CurrentTasMovie.IsRecording || WasRecording; + WasRecording = CurrentTasMovie.IsRecording() || WasRecording; if (e.Button == MouseButtons.Left) { @@ -953,7 +953,7 @@ namespace BizHawk.Client.EmuHawk // skip rerecord counting on drawing entirely, mouse down is enough // avoid introducing another global bool wasCountingRerecords = CurrentTasMovie.IsCountingRerecords; - WasRecording = CurrentTasMovie.IsRecording || WasRecording; + WasRecording = CurrentTasMovie.IsRecording() || WasRecording; int startVal, endVal; int frame = e.NewCell.RowIndex.Value; diff --git a/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.Navigation.cs b/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.Navigation.cs index 8cee89a134..ac4cdb144b 100644 --- a/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.Navigation.cs +++ b/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.Navigation.cs @@ -1,4 +1,6 @@ -namespace BizHawk.Client.EmuHawk +using BizHawk.Client.Common; + +namespace BizHawk.Client.EmuHawk { public partial class TAStudio { @@ -27,7 +29,7 @@ { // If seeking to a frame before or at the end of the movie, use StartAtNearestFrameAndEmulate // Otherwise, load the latest state (if not already there) and seek while recording. - WasRecording = CurrentTasMovie.IsRecording || WasRecording; + WasRecording = CurrentTasMovie.IsRecording() || WasRecording; if (frame <= CurrentTasMovie.InputLogLength) { diff --git a/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs b/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs index 4404836dd0..96733b23f7 100644 --- a/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs +++ b/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs @@ -334,7 +334,7 @@ namespace BizHawk.Client.EmuHawk } // Start Scenario 1: A regular movie is active - if (Global.MovieSession.Movie.IsActive && !(Global.MovieSession.Movie is TasMovie)) + if (Global.MovieSession.Movie.IsActive() && !(Global.MovieSession.Movie is TasMovie)) { var result = MessageBox.Show("In order to use Tastudio, a new project must be created from the current movie\nThe current movie will be saved and closed, and a new project file will be created\nProceed?", "Convert movie", MessageBoxButtons.OKCancel, MessageBoxIcon.Question); if (result == DialogResult.OK) @@ -350,7 +350,7 @@ namespace BizHawk.Client.EmuHawk } // Start Scenario 2: A tasproj is already active - else if (Global.MovieSession.Movie.IsActive && Global.MovieSession.Movie is TasMovie) + else if (Global.MovieSession.Movie.IsActive() && Global.MovieSession.Movie is TasMovie) { bool result = LoadFile(new FileInfo(CurrentTasMovie.Filename), gotoFrame: Emulator.Frame); if (!result) diff --git a/BizHawk.Client.EmuHawk/tools/VirtualPads/VirtualpadsTool.cs b/BizHawk.Client.EmuHawk/tools/VirtualPads/VirtualpadsTool.cs index 4e303320bb..ba1ca76605 100644 --- a/BizHawk.Client.EmuHawk/tools/VirtualPads/VirtualpadsTool.cs +++ b/BizHawk.Client.EmuHawk/tools/VirtualPads/VirtualpadsTool.cs @@ -29,11 +29,7 @@ namespace BizHawk.Client.EmuHawk public bool Readonly { - get - { - return _readOnly; - } - + get => _readOnly; set { _readOnly = value; @@ -149,8 +145,8 @@ namespace BizHawk.Client.EmuHawk #region IToolForm Implementation - public bool AskSaveChanges() { return true; } - public bool UpdateBefore { get { return false; } } + public bool AskSaveChanges() => true; + public bool UpdateBefore => false; public void Restart() { @@ -173,7 +169,7 @@ namespace BizHawk.Client.EmuHawk Pads.ForEach(p => p.SetPrevious(null)); // Not the cleanest way to clear this every frame - if (Global.MovieSession.Movie.IsPlaying && !Global.MovieSession.Movie.IsFinished) + if (Global.MovieSession.Movie.Mode == MovieMode.Play) { Readonly = true; if (Global.MovieSession.CurrentInput != null) @@ -183,7 +179,7 @@ namespace BizHawk.Client.EmuHawk } else { - if (Global.MovieSession.Movie.IsRecording) + if (Global.MovieSession.Movie.IsRecording()) { Pads.ForEach(p => p.SetPrevious(Global.MovieSession.PreviousFrame)); }