diff --git a/src/BizHawk.Client.Common/Global.cs b/src/BizHawk.Client.Common/Global.cs index 5c2d61e325..af401c56ab 100644 --- a/src/BizHawk.Client.Common/Global.cs +++ b/src/BizHawk.Client.Common/Global.cs @@ -2,7 +2,6 @@ { public static class Global { - public static IMovieSession MovieSession { get; set; } public static InputManager InputManager { get; } = new InputManager(); } } diff --git a/src/BizHawk.Client.EmuHawk/Api/Libraries/JoypadApi.cs b/src/BizHawk.Client.EmuHawk/Api/Libraries/JoypadApi.cs index 03edfb35de..e6c6242831 100644 --- a/src/BizHawk.Client.EmuHawk/Api/Libraries/JoypadApi.cs +++ b/src/BizHawk.Client.EmuHawk/Api/Libraries/JoypadApi.cs @@ -28,7 +28,7 @@ namespace BizHawk.Client.EmuHawk public void SetFromMnemonicStr(string inputLogEntry) { - var controller = Global.MovieSession.GenerateMovieController(); + var controller = GlobalWin.MovieSession.GenerateMovieController(); try { controller.SetFromMnemonic(inputLogEntry); diff --git a/src/BizHawk.Client.EmuHawk/Api/Libraries/MovieApi.cs b/src/BizHawk.Client.EmuHawk/Api/Libraries/MovieApi.cs index 8e08411e42..5f6154ec8b 100644 --- a/src/BizHawk.Client.EmuHawk/Api/Libraries/MovieApi.cs +++ b/src/BizHawk.Client.EmuHawk/Api/Libraries/MovieApi.cs @@ -18,18 +18,18 @@ namespace BizHawk.Client.EmuHawk private readonly Action LogCallback; - public bool StartsFromSavestate() => Global.MovieSession.Movie.IsActive() && Global.MovieSession.Movie.StartsFromSavestate; + public bool StartsFromSavestate() => GlobalWin.MovieSession.Movie.IsActive() && GlobalWin.MovieSession.Movie.StartsFromSavestate; - public bool StartsFromSaveram() => Global.MovieSession.Movie.IsActive() && Global.MovieSession.Movie.StartsFromSaveRam; + public bool StartsFromSaveram() => GlobalWin.MovieSession.Movie.IsActive() && GlobalWin.MovieSession.Movie.StartsFromSaveRam; public IDictionary GetInput(int frame, int? controller = null) { - if (Global.MovieSession.Movie.NotActive()) + if (GlobalWin.MovieSession.Movie.NotActive()) { LogCallback("No movie loaded"); return null; } - var adapter = Global.MovieSession.Movie.GetInputState(frame); + var adapter = GlobalWin.MovieSession.Movie.GetInputState(frame); if (adapter == null) { LogCallback("Can't get input of the last frame of the movie. Use the previous frame"); @@ -41,79 +41,79 @@ namespace BizHawk.Client.EmuHawk public string GetInputAsMnemonic(int frame) { - if (Global.MovieSession.Movie.NotActive() || frame >= Global.MovieSession.Movie.InputLogLength) + if (GlobalWin.MovieSession.Movie.NotActive() || frame >= GlobalWin.MovieSession.Movie.InputLogLength) { return string.Empty; } - var lg = Global.MovieSession.Movie.LogGeneratorInstance( - Global.MovieSession.Movie.GetInputState(frame)); + var lg = GlobalWin.MovieSession.Movie.LogGeneratorInstance( + GlobalWin.MovieSession.Movie.GetInputState(frame)); return lg.GenerateLogEntry(); } public void Save(string filename = null) { - if (Global.MovieSession.Movie.NotActive()) + if (GlobalWin.MovieSession.Movie.NotActive()) { return; } if (!string.IsNullOrEmpty(filename)) { - filename += $".{Global.MovieSession.Movie.PreferredExtension}"; + filename += $".{GlobalWin.MovieSession.Movie.PreferredExtension}"; if (new FileInfo(filename).Exists) { LogCallback($"File {filename} already exists, will not overwrite"); return; } - Global.MovieSession.Movie.Filename = filename; + GlobalWin.MovieSession.Movie.Filename = filename; } - Global.MovieSession.Movie.Save(); + GlobalWin.MovieSession.Movie.Save(); } public Dictionary GetHeader() { var table = new Dictionary(); - if (Global.MovieSession.Movie.NotActive()) + if (GlobalWin.MovieSession.Movie.NotActive()) { return table; } - foreach (var kvp in Global.MovieSession.Movie.HeaderEntries) table[kvp.Key] = kvp.Value; + foreach (var kvp in GlobalWin.MovieSession.Movie.HeaderEntries) table[kvp.Key] = kvp.Value; return table; } - public List GetComments() => Global.MovieSession.Movie.Comments.ToList(); + public List GetComments() => GlobalWin.MovieSession.Movie.Comments.ToList(); public List GetSubtitles() => - Global.MovieSession.Movie.Subtitles + GlobalWin.MovieSession.Movie.Subtitles .Select(s => s.ToString()) .ToList(); - public string Filename() => Global.MovieSession.Movie.Filename; + public string Filename() => GlobalWin.MovieSession.Movie.Filename; - public bool GetReadOnly() => Global.MovieSession.ReadOnly; + public bool GetReadOnly() => GlobalWin.MovieSession.ReadOnly; - public ulong GetRerecordCount() => Global.MovieSession.Movie.Rerecords; + public ulong GetRerecordCount() => GlobalWin.MovieSession.Movie.Rerecords; - public bool GetRerecordCounting() => Global.MovieSession.Movie.IsCountingRerecords; + public bool GetRerecordCounting() => GlobalWin.MovieSession.Movie.IsCountingRerecords; - public bool IsLoaded() => Global.MovieSession.Movie.IsActive(); + public bool IsLoaded() => GlobalWin.MovieSession.Movie.IsActive(); - public int Length() => Global.MovieSession.Movie.FrameCount; + public int Length() => GlobalWin.MovieSession.Movie.FrameCount; - public string Mode() => Global.MovieSession.Movie.Mode.ToString().ToUpper(); + public string Mode() => GlobalWin.MovieSession.Movie.Mode.ToString().ToUpper(); - public void SetReadOnly(bool readOnly) => Global.MovieSession.ReadOnly = readOnly; + public void SetReadOnly(bool readOnly) => GlobalWin.MovieSession.ReadOnly = readOnly; - public void SetRerecordCount(ulong count) => Global.MovieSession.Movie.Rerecords = count; + public void SetRerecordCount(ulong count) => GlobalWin.MovieSession.Movie.Rerecords = count; - public void SetRerecordCounting(bool counting) => Global.MovieSession.Movie.IsCountingRerecords = counting; + public void SetRerecordCounting(bool counting) => GlobalWin.MovieSession.Movie.IsCountingRerecords = counting; - public void Stop() => Global.MovieSession.StopMovie(); + public void Stop() => GlobalWin.MovieSession.StopMovie(); public double GetFps() { - var movie = Global.MovieSession.Movie; + var movie = GlobalWin.MovieSession.Movie; if (movie.NotActive()) { return default; diff --git a/src/BizHawk.Client.EmuHawk/DisplayManager/OSDManager.cs b/src/BizHawk.Client.EmuHawk/DisplayManager/OSDManager.cs index 7fd2f0c1f1..4f9af436e2 100644 --- a/src/BizHawk.Client.EmuHawk/DisplayManager/OSDManager.cs +++ b/src/BizHawk.Client.EmuHawk/DisplayManager/OSDManager.cs @@ -67,24 +67,24 @@ namespace BizHawk.Client.EmuHawk private string MakeFrameCounter() { - if (Global.MovieSession.Movie.IsFinished()) + if (GlobalWin.MovieSession.Movie.IsFinished()) { var sb = new StringBuilder(); sb .Append(GlobalWin.Emulator.Frame) .Append('/') - .Append(Global.MovieSession.Movie.FrameCount) + .Append(GlobalWin.MovieSession.Movie.FrameCount) .Append(" (Finished)"); return sb.ToString(); } - if (Global.MovieSession.Movie.IsPlayingOrFinished()) + if (GlobalWin.MovieSession.Movie.IsPlayingOrFinished()) { var sb = new StringBuilder(); sb .Append(GlobalWin.Emulator.Frame) .Append('/') - .Append(Global.MovieSession.Movie.FrameCount); + .Append(GlobalWin.MovieSession.Movie.FrameCount); return sb.ToString(); } @@ -188,7 +188,7 @@ namespace BizHawk.Client.EmuHawk public string InputStrMovie() { - return MakeStringFor(Global.MovieSession.MovieController); + return MakeStringFor(GlobalWin.MovieSession.MovieController); } public string InputStrImmediate() @@ -198,9 +198,9 @@ namespace BizHawk.Client.EmuHawk public string InputPrevious() { - if (Global.MovieSession.Movie.IsPlayingOrRecording()) + if (GlobalWin.MovieSession.Movie.IsPlayingOrRecording()) { - var state = Global.MovieSession.Movie.GetInputState(GlobalWin.Emulator.Frame - 1); + var state = GlobalWin.MovieSession.Movie.GetInputState(GlobalWin.Emulator.Frame - 1); if (state != null) { return MakeStringFor(state); @@ -214,9 +214,9 @@ namespace BizHawk.Client.EmuHawk { IController m = Global.InputManager.AutofireStickyXorAdapter; - if (Global.MovieSession.Movie.IsPlayingOrRecording() && GlobalWin.Emulator.Frame > 0) + if (GlobalWin.MovieSession.Movie.IsPlayingOrRecording() && GlobalWin.Emulator.Frame > 0) { - m = m.Or(Global.MovieSession.Movie.GetInputState(GlobalWin.Emulator.Frame - 1)); + m = m.Or(GlobalWin.MovieSession.Movie.GetInputState(GlobalWin.Emulator.Frame - 1)); } return MakeStringFor(m); @@ -229,11 +229,11 @@ namespace BizHawk.Client.EmuHawk public string MakeIntersectImmediatePrevious() { - if (Global.MovieSession.Movie.IsActive()) + if (GlobalWin.MovieSession.Movie.IsActive()) { - var m = Global.MovieSession.Movie.IsPlayingOrRecording() - ? Global.MovieSession.Movie.GetInputState(GlobalWin.Emulator.Frame - 1) - : Global.MovieSession.MovieController; + var m = GlobalWin.MovieSession.Movie.IsPlayingOrRecording() + ? GlobalWin.MovieSession.Movie.GetInputState(GlobalWin.Emulator.Frame - 1) + : GlobalWin.MovieSession.MovieController; return MakeStringFor(Global.InputManager.AutofireStickyXorAdapter.And(m)); } @@ -243,8 +243,8 @@ namespace BizHawk.Client.EmuHawk public string MakeRerecordCount() { - return Global.MovieSession.Movie.IsActive() - ? Global.MovieSession.Movie.Rerecords.ToString() + return GlobalWin.MovieSession.Movie.IsActive() + ? GlobalWin.MovieSession.Movie.Rerecords.ToString() : ""; } @@ -272,8 +272,8 @@ namespace BizHawk.Client.EmuHawk if (GlobalWin.Config.DisplayInput && !GlobalWin.Game.IsNullInstance()) { - if (Global.MovieSession.Movie.IsPlaying() - || (Global.MovieSession.Movie.IsFinished() && GlobalWin.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 (GlobalWin.MovieSession.Movie.IsPlaying() + || (GlobalWin.MovieSession.Movie.IsFinished() && GlobalWin.Emulator.Frame == GlobalWin.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, GlobalWin.Config.InputDisplay, input); @@ -320,10 +320,10 @@ namespace BizHawk.Client.EmuHawk } } - if (Global.MovieSession.MultiTrack.IsActive) + if (GlobalWin.MovieSession.MultiTrack.IsActive) { - var point = GetCoordinates(g, GlobalWin.Config.MultitrackRecorder, Global.MovieSession.MultiTrack.Status); - DrawOsdMessage(g, Global.MovieSession.MultiTrack.Status, FixedMessagesColor, point.X, point.Y); + var point = GetCoordinates(g, GlobalWin.Config.MultitrackRecorder, GlobalWin.MovieSession.MultiTrack.Status); + DrawOsdMessage(g, GlobalWin.MovieSession.MultiTrack.Status, FixedMessagesColor, point.X, point.Y); } if (GlobalWin.Config.DisplayFps && Fps != null) @@ -368,9 +368,9 @@ namespace BizHawk.Client.EmuHawk g.DrawString(message, MessageFont, Color.White, point.X, point.Y); } - if (Global.MovieSession.Movie.IsActive() && GlobalWin.Config.DisplaySubtitles) + if (GlobalWin.MovieSession.Movie.IsActive() && GlobalWin.Config.DisplaySubtitles) { - var subList = Global.MovieSession.Movie.Subtitles.GetSubtitles(GlobalWin.Emulator.Frame); + var subList = GlobalWin.MovieSession.Movie.Subtitles.GetSubtitles(GlobalWin.Emulator.Frame); foreach (var sub in subList) { diff --git a/src/BizHawk.Client.EmuHawk/GlobalWin.cs b/src/BizHawk.Client.EmuHawk/GlobalWin.cs index 6ce43e0904..581a287109 100644 --- a/src/BizHawk.Client.EmuHawk/GlobalWin.cs +++ b/src/BizHawk.Client.EmuHawk/GlobalWin.cs @@ -45,5 +45,6 @@ namespace BizHawk.Client.EmuHawk public static Config Config { get; set; } public static FirmwareManager FirmwareManager { get; set; } public static GameInfo Game { get; set; } + public static IMovieSession MovieSession { get; set; } } } diff --git a/src/BizHawk.Client.EmuHawk/MainForm.cs b/src/BizHawk.Client.EmuHawk/MainForm.cs index a8e2544c09..9a771c10c2 100644 --- a/src/BizHawk.Client.EmuHawk/MainForm.cs +++ b/src/BizHawk.Client.EmuHawk/MainForm.cs @@ -884,8 +884,8 @@ namespace BizHawk.Client.EmuHawk public IMovieSession MovieSession { - get => Global. MovieSession; - private set => Global.MovieSession = value; + get => GlobalWin.MovieSession; + private set => GlobalWin.MovieSession = value; } private GameInfo Game diff --git a/src/BizHawk.Client.EmuHawk/Program.cs b/src/BizHawk.Client.EmuHawk/Program.cs index 482bef4c65..d213c489df 100644 --- a/src/BizHawk.Client.EmuHawk/Program.cs +++ b/src/BizHawk.Client.EmuHawk/Program.cs @@ -217,7 +217,7 @@ namespace BizHawk.Client.EmuHawk { GlobalWin.ExitCode = mf.ProgramRunLoop(); } - catch (Exception e) when (Global.MovieSession.Movie.IsActive() && !(Debugger.IsAttached || VersionInfo.DeveloperBuild)) + catch (Exception e) when (GlobalWin.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)", @@ -227,7 +227,7 @@ namespace BizHawk.Client.EmuHawk ); if (result == DialogResult.Yes) { - Global.MovieSession.Movie.Save(); + GlobalWin.MovieSession.Movie.Save(); } } } diff --git a/src/BizHawk.Client.EmuHawk/config/GB/GBPrefControl.cs b/src/BizHawk.Client.EmuHawk/config/GB/GBPrefControl.cs index 31130324c9..da3845d806 100644 --- a/src/BizHawk.Client.EmuHawk/config/GB/GBPrefControl.cs +++ b/src/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.NotActive(); + propertyGrid1.Enabled = GlobalWin.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.NotActive()) + PutSettings(null, GlobalWin.MovieSession.Movie.IsActive() ? _ss : null); + if (GlobalWin.MovieSession.Movie.NotActive()) { SyncSettingsChanged = true; } diff --git a/src/BizHawk.Client.EmuHawk/config/GenericCoreConfig.cs b/src/BizHawk.Client.EmuHawk/config/GenericCoreConfig.cs index 06ea87edf5..fa0a2227e1 100644 --- a/src/BizHawk.Client.EmuHawk/config/GenericCoreConfig.cs +++ b/src/BizHawk.Client.EmuHawk/config/GenericCoreConfig.cs @@ -52,7 +52,7 @@ namespace BizHawk.Client.EmuHawk tabControl1.TabPages.Remove(tabPage2); } - if (Global.MovieSession.Movie.IsActive()) + if (GlobalWin.MovieSession.Movie.IsActive()) { propertyGrid2.Enabled = false; // disable changes to sync setting when movie, so as not to confuse user } diff --git a/src/BizHawk.Client.EmuHawk/movie/EditCommentsForm.cs b/src/BizHawk.Client.EmuHawk/movie/EditCommentsForm.cs index 4ec912dd05..7a30b89909 100644 --- a/src/BizHawk.Client.EmuHawk/movie/EditCommentsForm.cs +++ b/src/BizHawk.Client.EmuHawk/movie/EditCommentsForm.cs @@ -24,7 +24,7 @@ namespace BizHawk.Client.EmuHawk private void EditCommentsForm_Load(object sender, EventArgs e) { - if (!ForceReadWrite && Global.MovieSession.ReadOnly) + if (!ForceReadWrite && GlobalWin.MovieSession.ReadOnly) { CommentGrid.Columns[0].ReadOnly = true; Text = "View Comments"; diff --git a/src/BizHawk.Client.EmuHawk/tools/Lua/Libraries/TAStudioLuaLibrary.cs b/src/BizHawk.Client.EmuHawk/tools/Lua/Libraries/TAStudioLuaLibrary.cs index 2ee2d3f2b9..e6c8f3e630 100644 --- a/src/BizHawk.Client.EmuHawk/tools/Lua/Libraries/TAStudioLuaLibrary.cs +++ b/src/BizHawk.Client.EmuHawk/tools/Lua/Libraries/TAStudioLuaLibrary.cs @@ -377,7 +377,7 @@ namespace BizHawk.Client.EmuHawk var branch = Tastudio.CurrentTasMovie.Branches.FirstOrDefault(b => b.Uuid.ToString() == branchId); if (branch != null && frame < branch.InputLog.Count) { - var controller = Global.MovieSession.GenerateMovieController(); + var controller = GlobalWin.MovieSession.GenerateMovieController(); controller.SetFromMnemonic(branch.InputLog[frame]); foreach (var button in controller.Definition.BoolButtons) diff --git a/src/BizHawk.Client.EmuHawk/tools/TAStudio/PatternsForm.cs b/src/BizHawk.Client.EmuHawk/tools/TAStudio/PatternsForm.cs index 51abf10d22..0a7855d42f 100644 --- a/src/BizHawk.Client.EmuHawk/tools/TAStudio/PatternsForm.cs +++ b/src/BizHawk.Client.EmuHawk/tools/TAStudio/PatternsForm.cs @@ -272,7 +272,7 @@ namespace BizHawk.Client.EmuHawk private void GetPattern() { - int index = Global.MovieSession.MovieController.Definition.BoolButtons.IndexOf(SelectedButton); + int index = GlobalWin.MovieSession.MovieController.Definition.BoolButtons.IndexOf(SelectedButton); if (SelectedButton == "Default bool Auto-Fire") { diff --git a/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudioClipboard.cs b/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudioClipboard.cs index e9ba82ce0c..daff90498e 100644 --- a/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudioClipboard.cs +++ b/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudioClipboard.cs @@ -19,7 +19,7 @@ namespace BizHawk.Client.EmuHawk public override string ToString() { - var lg = Global.MovieSession.Movie.LogGeneratorInstance(ControllerState); + var lg = GlobalWin.MovieSession.Movie.LogGeneratorInstance(ControllerState); return lg.GenerateLogEntry(); } @@ -27,7 +27,7 @@ namespace BizHawk.Client.EmuHawk { try { - var controller = Global.MovieSession.GenerateMovieController(); + var controller = GlobalWin.MovieSession.GenerateMovieController(); controller.SetFromMnemonic(inputLogEntry); foreach (var button in controller.Definition.BoolButtons)