From a3c82c43d5e2e6b35b352025156c5d579b345123 Mon Sep 17 00:00:00 2001 From: adelikat Date: Tue, 2 Jun 2020 17:34:16 -0500 Subject: [PATCH] Config - move some movie settings to a MovieConfig object --- src/BizHawk.Client.Common/config/Config.cs | 8 ++---- .../config/MovieConfig.cs | 12 +++++++++ .../config/SaveStateConfig.cs | 2 -- .../movie/MovieSession.cs | 6 ++--- .../movie/bk2/Bk2Movie.IO.cs | 2 +- .../movie/bk2/Bk2Movie.InputLog.cs | 6 ++--- .../movie/bk2/Bk2Movie.ModeApi.cs | 2 +- .../movie/bk2/Bk2Movie.cs | 2 +- .../movie/tasproj/TasMovie.cs | 6 ++--- src/BizHawk.Client.EmuHawk/MainForm.Events.cs | 26 +++++++++---------- src/BizHawk.Client.EmuHawk/MainForm.cs | 4 +-- src/BizHawk.Client.EmuHawk/Program.cs | 2 +- .../config/EmuHawkOptions.cs | 4 +-- .../tools/Macros/MovieZone.cs | 2 +- .../tools/TAStudio/TAStudio.cs | 6 ++--- 15 files changed, 48 insertions(+), 42 deletions(-) create mode 100644 src/BizHawk.Client.Common/config/MovieConfig.cs diff --git a/src/BizHawk.Client.Common/config/Config.cs b/src/BizHawk.Client.Common/config/Config.cs index 12ce555843..9d3017937c 100644 --- a/src/BizHawk.Client.Common/config/Config.cs +++ b/src/BizHawk.Client.Common/config/Config.cs @@ -79,8 +79,6 @@ namespace BizHawk.Client.Common public bool AllowUdlr { get; set; } public bool ForbidUdlr { get; set; } public bool ShowContextMenu { get; set; } = true; - public bool EnableBackupMovies { get; set; } = true; - public bool MoviesOnDisk { get; set; } public bool HotkeyConfigAutoTab { get; set; } = true; public bool InputConfigAutoTab { get; set; } = true; public bool SkipWaterboxIntegrityChecks { get; set; } = false; @@ -120,8 +118,6 @@ namespace BizHawk.Client.Common public bool TurboSeek { get; set; } - public MovieEndAction MovieEndAction { get; set; } = MovieEndAction.Finish; - public ClientProfile SelectedProfile { get; set; } = ClientProfile.Unknown; // N64 @@ -140,6 +136,8 @@ namespace BizHawk.Client.Common public SaveStateConfig Savestates { get; set; } = new SaveStateConfig(); + public MovieConfig Movies { get; set; } = new MovieConfig(); + /// /// Use vsync when presenting all 3d accelerated windows. /// For the main window, if VSyncThrottle = false, this will try to use vsync without throttling to it @@ -279,8 +277,6 @@ namespace BizHawk.Client.Common public string DefaultAuthor { get; set; } = "default user"; public bool UseDefaultAuthor { get; set; } = true; public bool DisplaySubtitles { get; set; } = true; - public bool VBAStyleMovieLoadState { get; set; } - public bool MoviePlaybackPokeMode { get; set; } // Play Movie Dialog public bool PlayMovieIncludeSubDir { get; set; } diff --git a/src/BizHawk.Client.Common/config/MovieConfig.cs b/src/BizHawk.Client.Common/config/MovieConfig.cs new file mode 100644 index 0000000000..abd6bde349 --- /dev/null +++ b/src/BizHawk.Client.Common/config/MovieConfig.cs @@ -0,0 +1,12 @@ +namespace BizHawk.Client.Common +{ + public class MovieConfig + { + public MovieEndAction MovieEndAction { get; set; } = MovieEndAction.Finish; + public bool EnableBackupMovies { get; set; } = true; + public bool MoviesOnDisk { get; set; } + public int MovieCompressionLevel { get; set; } = 2; + public bool VBAStyleMovieLoadState { get; set; } + public bool MoviePlaybackPokeMode { get; set; } + } +} diff --git a/src/BizHawk.Client.Common/config/SaveStateConfig.cs b/src/BizHawk.Client.Common/config/SaveStateConfig.cs index 619de20352..bd53a707e4 100644 --- a/src/BizHawk.Client.Common/config/SaveStateConfig.cs +++ b/src/BizHawk.Client.Common/config/SaveStateConfig.cs @@ -7,8 +7,6 @@ public int CompressionLevelNormal { get; set; } = DefaultCompressionLevelNormal; public const int DefaultCompressionLevelRewind = 0; // this isn't actually used yet public int CompressionLevelRewind { get; set; } = DefaultCompressionLevelRewind; // this isn't actually used yet - public int MovieCompressionLevel { get; set; } = 2; - public bool MakeBackups { get; set; } = true; public bool SaveScreenshot { get; set; } = true; public int BigScreenshotSize { get; set; } = 128 * 1024; diff --git a/src/BizHawk.Client.Common/movie/MovieSession.cs b/src/BizHawk.Client.Common/movie/MovieSession.cs index 7ef28a0c31..621ce92d30 100644 --- a/src/BizHawk.Client.Common/movie/MovieSession.cs +++ b/src/BizHawk.Client.Common/movie/MovieSession.cs @@ -119,7 +119,7 @@ namespace BizHawk.Client.Common LatchInputToUser(); ClearFrame(); } - else if (Global.Config.MoviePlaybackPokeMode) + else if (Global.Config.Movies.MoviePlaybackPokeMode) { LatchInputToUser(); var lg = Movie.LogGeneratorInstance(Global.InputManager.MovieOutputHardpoint); @@ -310,7 +310,7 @@ namespace BizHawk.Client.Common { if (Movie.IsActive()) { - if (Global.Config.VBAStyleMovieLoadState) + if (Global.Config.Movies.VBAStyleMovieLoadState) { Output("Multi-track can not be used in Full Movie Loadstates mode"); } @@ -452,7 +452,7 @@ namespace BizHawk.Client.Common } // TODO: mainform callback to update on mode change - switch (Global.Config.MovieEndAction) + switch (Global.Config.Movies.MovieEndAction) { case MovieEndAction.Stop: Movie.Stop(); diff --git a/src/BizHawk.Client.Common/movie/bk2/Bk2Movie.IO.cs b/src/BizHawk.Client.Common/movie/bk2/Bk2Movie.IO.cs index b5e56092ef..d874369516 100644 --- a/src/BizHawk.Client.Common/movie/bk2/Bk2Movie.IO.cs +++ b/src/BizHawk.Client.Common/movie/bk2/Bk2Movie.IO.cs @@ -160,7 +160,7 @@ namespace BizHawk.Client.Common SetCycleValues(); // We are pretending these only need to be set on save CreateDirectoryIfNotExists(fn); - using var bs = new ZipStateSaver(fn, Global.Config.Savestates.MovieCompressionLevel); + using var bs = new ZipStateSaver(fn, Global.Config.Movies.MovieCompressionLevel); AddLumps(bs); if (!isBackup) diff --git a/src/BizHawk.Client.Common/movie/bk2/Bk2Movie.InputLog.cs b/src/BizHawk.Client.Common/movie/bk2/Bk2Movie.InputLog.cs index f2ce93c8e9..bc87e46305 100644 --- a/src/BizHawk.Client.Common/movie/bk2/Bk2Movie.InputLog.cs +++ b/src/BizHawk.Client.Common/movie/bk2/Bk2Movie.InputLog.cs @@ -41,7 +41,7 @@ namespace BizHawk.Client.Common // We are in record mode so replace the movie log with the one from the savestate if (!Global.MovieSession.MultiTrack.IsActive) // TODO: this is run before being attached { - if (Global.Config.EnableBackupMovies && MakeBackup && Log.Count != 0) + if (Global.Config.Movies.EnableBackupMovies && MakeBackup && Log.Count != 0) { SaveBackup(); MakeBackup = false; @@ -153,14 +153,14 @@ namespace BizHawk.Client.Common if (stateFramei.StrictlyBoundedBy(0.RangeTo(Log.Count))) { - if (!Global.Config.VBAStyleMovieLoadState) + if (!Global.Config.Movies.VBAStyleMovieLoadState) { Truncate(stateFramei); } } else if (stateFramei > Log.Count) // Post movie savestate { - if (!Global.Config.VBAStyleMovieLoadState) + if (!Global.Config.Movies.VBAStyleMovieLoadState) { Truncate(Log.Count); } diff --git a/src/BizHawk.Client.Common/movie/bk2/Bk2Movie.ModeApi.cs b/src/BizHawk.Client.Common/movie/bk2/Bk2Movie.ModeApi.cs index 5b5e8fd284..1adc7259b0 100644 --- a/src/BizHawk.Client.Common/movie/bk2/Bk2Movie.ModeApi.cs +++ b/src/BizHawk.Client.Common/movie/bk2/Bk2Movie.ModeApi.cs @@ -9,7 +9,7 @@ namespace BizHawk.Client.Common public virtual void StartNewRecording() { Mode = MovieMode.Record; - if (Global.Config.EnableBackupMovies && MakeBackup && Log.Any()) + if (Global.Config.Movies.EnableBackupMovies && MakeBackup && Log.Any()) { SaveBackup(); MakeBackup = false; diff --git a/src/BizHawk.Client.Common/movie/bk2/Bk2Movie.cs b/src/BizHawk.Client.Common/movie/bk2/Bk2Movie.cs index 3c50b4e5f5..4fb7782279 100644 --- a/src/BizHawk.Client.Common/movie/bk2/Bk2Movie.cs +++ b/src/BizHawk.Client.Common/movie/bk2/Bk2Movie.cs @@ -101,7 +101,7 @@ namespace BizHawk.Client.Common public virtual void RecordFrame(int frame, IController source) { - if (Global.Config.VBAStyleMovieLoadState) + if (Global.Config.Movies.VBAStyleMovieLoadState) { if (Emulator.Frame < Log.Count) { diff --git a/src/BizHawk.Client.Common/movie/tasproj/TasMovie.cs b/src/BizHawk.Client.Common/movie/tasproj/TasMovie.cs index 512dc3e5dd..d3ab6c351f 100644 --- a/src/BizHawk.Client.Common/movie/tasproj/TasMovie.cs +++ b/src/BizHawk.Client.Common/movie/tasproj/TasMovie.cs @@ -189,7 +189,7 @@ namespace BizHawk.Client.Common { _timelineBranchFrame = null; - if (Global.Config.EnableBackupMovies && MakeBackup && Log.Count != 0) + if (Global.Config.Movies.EnableBackupMovies && MakeBackup && Log.Count != 0) { SaveBackup(); MakeBackup = false; @@ -308,14 +308,14 @@ namespace BizHawk.Client.Common if (stateFrameValue > 0 && stateFrameValue < Log.Count) { - if (!Global.Config.VBAStyleMovieLoadState) + if (!Global.Config.Movies.VBAStyleMovieLoadState) { Truncate(stateFrameValue); } } else if (stateFrameValue > Log.Count) // Post movie savestate { - if (!Global.Config.VBAStyleMovieLoadState) + if (!Global.Config.Movies.VBAStyleMovieLoadState) { Truncate(Log.Count); } diff --git a/src/BizHawk.Client.EmuHawk/MainForm.Events.cs b/src/BizHawk.Client.EmuHawk/MainForm.Events.cs index 9efb40d67c..2a21e14032 100644 --- a/src/BizHawk.Client.EmuHawk/MainForm.Events.cs +++ b/src/BizHawk.Client.EmuHawk/MainForm.Events.cs @@ -241,8 +241,8 @@ namespace BizHawk.Client.EmuHawk = MovieSession.Movie.IsActive(); ReadonlyMenuItem.Checked = MovieSession.ReadOnly; - AutomaticallyBackupMoviesMenuItem.Checked = Config.EnableBackupMovies; - FullMovieLoadstatesMenuItem.Checked = Config.VBAStyleMovieLoadState; + AutomaticallyBackupMoviesMenuItem.Checked = Config.Movies.EnableBackupMovies; + FullMovieLoadstatesMenuItem.Checked = Config.Movies.VBAStyleMovieLoadState; ReadonlyMenuItem.ShortcutKeyDisplayString = Config.HotkeyBindings["Toggle read-only"].Bindings; RecordMovieMenuItem.ShortcutKeyDisplayString = Config.HotkeyBindings["Record Movie"].Bindings; @@ -272,10 +272,10 @@ namespace BizHawk.Client.EmuHawk private void MovieEndSubMenu_DropDownOpened(object sender, EventArgs e) { - MovieEndFinishMenuItem.Checked = Config.MovieEndAction == MovieEndAction.Finish; - MovieEndRecordMenuItem.Checked = Config.MovieEndAction == MovieEndAction.Record; - MovieEndStopMenuItem.Checked = Config.MovieEndAction == MovieEndAction.Stop; - MovieEndPauseMenuItem.Checked = Config.MovieEndAction == MovieEndAction.Pause; + MovieEndFinishMenuItem.Checked = Config.Movies.MovieEndAction == MovieEndAction.Finish; + MovieEndRecordMenuItem.Checked = Config.Movies.MovieEndAction == MovieEndAction.Record; + MovieEndStopMenuItem.Checked = Config.Movies.MovieEndAction == MovieEndAction.Stop; + MovieEndPauseMenuItem.Checked = Config.Movies.MovieEndAction == MovieEndAction.Pause; // Arguably an IControlMainForm property should be set here, but in reality only Tastudio is ever going to interfere with this logic MovieEndFinishMenuItem.Enabled = @@ -564,7 +564,7 @@ namespace BizHawk.Client.EmuHawk private void StopMovieWithoutSavingMenuItem_Click(object sender, EventArgs e) { - if (Config.EnableBackupMovies) + if (Config.Movies.EnableBackupMovies) { MovieSession.Movie.SaveBackup(); } @@ -574,32 +574,32 @@ namespace BizHawk.Client.EmuHawk private void AutomaticMovieBackupMenuItem_Click(object sender, EventArgs e) { - Config.EnableBackupMovies ^= true; + Config.Movies.EnableBackupMovies ^= true; } private void FullMovieLoadstatesMenuItem_Click(object sender, EventArgs e) { - Config.VBAStyleMovieLoadState ^= true; + Config.Movies.VBAStyleMovieLoadState ^= true; } private void MovieEndFinishMenuItem_Click(object sender, EventArgs e) { - Config.MovieEndAction = MovieEndAction.Finish; + Config.Movies.MovieEndAction = MovieEndAction.Finish; } private void MovieEndRecordMenuItem_Click(object sender, EventArgs e) { - Config.MovieEndAction = MovieEndAction.Record; + Config.Movies.MovieEndAction = MovieEndAction.Record; } private void MovieEndStopMenuItem_Click(object sender, EventArgs e) { - Config.MovieEndAction = MovieEndAction.Stop; + Config.Movies.MovieEndAction = MovieEndAction.Stop; } private void MovieEndPauseMenuItem_Click(object sender, EventArgs e) { - Config.MovieEndAction = MovieEndAction.Pause; + Config.Movies.MovieEndAction = MovieEndAction.Pause; } private void ConfigAndRecordAVMenuItem_Click(object sender, EventArgs e) diff --git a/src/BizHawk.Client.EmuHawk/MainForm.cs b/src/BizHawk.Client.EmuHawk/MainForm.cs index 81367722c0..a17b2f6dde 100644 --- a/src/BizHawk.Client.EmuHawk/MainForm.cs +++ b/src/BizHawk.Client.EmuHawk/MainForm.cs @@ -2652,8 +2652,8 @@ namespace BizHawk.Client.EmuHawk private void ToggleModePokeMode() { - Config.MoviePlaybackPokeMode ^= true; - AddOnScreenMessage($"Movie Poke mode {(Config.MoviePlaybackPokeMode ? "enabled" : "disabled")}"); + Config.Movies.MoviePlaybackPokeMode ^= true; + AddOnScreenMessage($"Movie Poke mode {(Config.Movies.MoviePlaybackPokeMode ? "enabled" : "disabled")}"); } private void ToggleBackgroundInput() diff --git a/src/BizHawk.Client.EmuHawk/Program.cs b/src/BizHawk.Client.EmuHawk/Program.cs index e0167cde42..8780c96593 100644 --- a/src/BizHawk.Client.EmuHawk/Program.cs +++ b/src/BizHawk.Client.EmuHawk/Program.cs @@ -120,7 +120,7 @@ namespace BizHawk.Client.EmuHawk Global.Config.ResolveDefaults(); - StringLogUtil.DefaultToDisk = Global.Config.MoviesOnDisk; + StringLogUtil.DefaultToDisk = Global.Config.Movies.MoviesOnDisk; // super hacky! this needs to be done first. still not worth the trouble to make this system fully proper if (Array.Exists(args, arg => arg.StartsWith("--gdi", StringComparison.InvariantCultureIgnoreCase))) diff --git a/src/BizHawk.Client.EmuHawk/config/EmuHawkOptions.cs b/src/BizHawk.Client.EmuHawk/config/EmuHawkOptions.cs index 03ce6ebd50..332c4fd1c9 100644 --- a/src/BizHawk.Client.EmuHawk/config/EmuHawkOptions.cs +++ b/src/BizHawk.Client.EmuHawk/config/EmuHawkOptions.cs @@ -74,7 +74,7 @@ namespace BizHawk.Client.EmuHawk AutosaveSaveRAMSeconds = _config.FlushSaveRamFrames / 60; FrameAdvSkipLagCheckbox.Checked = _config.SkipLagFrame; LuaDuringTurboCheckbox.Checked = _config.RunLuaDuringTurbo; - cbMoviesOnDisk.Checked = _config.MoviesOnDisk; + cbMoviesOnDisk.Checked = _config.Movies.MoviesOnDisk; cbSkipWaterboxIntegrityChecks.Checked = _config.SkipWaterboxIntegrityChecks; switch (_config.HostInputMethod) @@ -128,7 +128,7 @@ namespace BizHawk.Client.EmuHawk _config.SkipLagFrame = FrameAdvSkipLagCheckbox.Checked; _config.RunLuaDuringTurbo = LuaDuringTurboCheckbox.Checked; - _config.MoviesOnDisk = cbMoviesOnDisk.Checked; + _config.Movies.MoviesOnDisk = cbMoviesOnDisk.Checked; _config.SkipWaterboxIntegrityChecks = cbSkipWaterboxIntegrityChecks.Checked; var prevLuaEngine = _config.LuaEngine; diff --git a/src/BizHawk.Client.EmuHawk/tools/Macros/MovieZone.cs b/src/BizHawk.Client.EmuHawk/tools/Macros/MovieZone.cs index 1a51b1620b..e70cde0a31 100644 --- a/src/BizHawk.Client.EmuHawk/tools/Macros/MovieZone.cs +++ b/src/BizHawk.Client.EmuHawk/tools/Macros/MovieZone.cs @@ -194,7 +194,7 @@ namespace BizHawk.Client.EmuHawk if (movie.InputLogLength >= _emulator.Frame) { movie.SwitchToPlay(); - Global.Config.MovieEndAction = MovieEndAction.Record; + Global.Config.Movies.MovieEndAction = MovieEndAction.Record; } } diff --git a/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs b/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs index 3e4f017f73..8f7646c6ac 100644 --- a/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs +++ b/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs @@ -276,9 +276,9 @@ namespace BizHawk.Client.EmuHawk SetTasMovieCallbacks(CurrentTasMovie); SetTextProperty(); MainForm.RelinquishControl(this); - _originalEndAction = Config.MovieEndAction; + _originalEndAction = Config.Movies.MovieEndAction; MainForm.ClearRewindData(); - Config.MovieEndAction = MovieEndAction.Record; + Config.Movies.MovieEndAction = MovieEndAction.Record; MainForm.SetMainformMovieInfo(); MovieSession.ReadOnly = true; SetSplicer(); @@ -794,7 +794,7 @@ namespace BizHawk.Client.EmuHawk MainForm.PauseOnFrame = null; MainForm.AddOnScreenMessage("TAStudio disengaged"); MainForm.TakeBackControl(); - Config.MovieEndAction = _originalEndAction; + Config.Movies.MovieEndAction = _originalEndAction; MainForm.SetMainformMovieInfo(); }