move MovieSession from Global to GlobalWin

This commit is contained in:
adelikat 2020-06-07 13:07:09 -05:00
parent 8c5538405f
commit c4c820fad3
13 changed files with 64 additions and 64 deletions

View File

@ -2,7 +2,6 @@
{ {
public static class Global public static class Global
{ {
public static IMovieSession MovieSession { get; set; }
public static InputManager InputManager { get; } = new InputManager(); public static InputManager InputManager { get; } = new InputManager();
} }
} }

View File

@ -28,7 +28,7 @@ namespace BizHawk.Client.EmuHawk
public void SetFromMnemonicStr(string inputLogEntry) public void SetFromMnemonicStr(string inputLogEntry)
{ {
var controller = Global.MovieSession.GenerateMovieController(); var controller = GlobalWin.MovieSession.GenerateMovieController();
try try
{ {
controller.SetFromMnemonic(inputLogEntry); controller.SetFromMnemonic(inputLogEntry);

View File

@ -18,18 +18,18 @@ namespace BizHawk.Client.EmuHawk
private readonly Action<string> LogCallback; private readonly Action<string> 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<string, object> GetInput(int frame, int? controller = null) public IDictionary<string, object> GetInput(int frame, int? controller = null)
{ {
if (Global.MovieSession.Movie.NotActive()) if (GlobalWin.MovieSession.Movie.NotActive())
{ {
LogCallback("No movie loaded"); LogCallback("No movie loaded");
return null; return null;
} }
var adapter = Global.MovieSession.Movie.GetInputState(frame); var adapter = GlobalWin.MovieSession.Movie.GetInputState(frame);
if (adapter == null) if (adapter == null)
{ {
LogCallback("Can't get input of the last frame of the movie. Use the previous frame"); 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) 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; return string.Empty;
} }
var lg = Global.MovieSession.Movie.LogGeneratorInstance( var lg = GlobalWin.MovieSession.Movie.LogGeneratorInstance(
Global.MovieSession.Movie.GetInputState(frame)); GlobalWin.MovieSession.Movie.GetInputState(frame));
return lg.GenerateLogEntry(); return lg.GenerateLogEntry();
} }
public void Save(string filename = null) public void Save(string filename = null)
{ {
if (Global.MovieSession.Movie.NotActive()) if (GlobalWin.MovieSession.Movie.NotActive())
{ {
return; return;
} }
if (!string.IsNullOrEmpty(filename)) if (!string.IsNullOrEmpty(filename))
{ {
filename += $".{Global.MovieSession.Movie.PreferredExtension}"; filename += $".{GlobalWin.MovieSession.Movie.PreferredExtension}";
if (new FileInfo(filename).Exists) if (new FileInfo(filename).Exists)
{ {
LogCallback($"File {filename} already exists, will not overwrite"); LogCallback($"File {filename} already exists, will not overwrite");
return; return;
} }
Global.MovieSession.Movie.Filename = filename; GlobalWin.MovieSession.Movie.Filename = filename;
} }
Global.MovieSession.Movie.Save(); GlobalWin.MovieSession.Movie.Save();
} }
public Dictionary<string, string> GetHeader() public Dictionary<string, string> GetHeader()
{ {
var table = new Dictionary<string, string>(); var table = new Dictionary<string, string>();
if (Global.MovieSession.Movie.NotActive()) if (GlobalWin.MovieSession.Movie.NotActive())
{ {
return table; 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; return table;
} }
public List<string> GetComments() => Global.MovieSession.Movie.Comments.ToList(); public List<string> GetComments() => GlobalWin.MovieSession.Movie.Comments.ToList();
public List<string> GetSubtitles() => public List<string> GetSubtitles() =>
Global.MovieSession.Movie.Subtitles GlobalWin.MovieSession.Movie.Subtitles
.Select(s => s.ToString()) .Select(s => s.ToString())
.ToList(); .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() public double GetFps()
{ {
var movie = Global.MovieSession.Movie; var movie = GlobalWin.MovieSession.Movie;
if (movie.NotActive()) if (movie.NotActive())
{ {
return default; return default;

View File

@ -67,24 +67,24 @@ namespace BizHawk.Client.EmuHawk
private string MakeFrameCounter() private string MakeFrameCounter()
{ {
if (Global.MovieSession.Movie.IsFinished()) if (GlobalWin.MovieSession.Movie.IsFinished())
{ {
var sb = new StringBuilder(); var sb = new StringBuilder();
sb sb
.Append(GlobalWin.Emulator.Frame) .Append(GlobalWin.Emulator.Frame)
.Append('/') .Append('/')
.Append(Global.MovieSession.Movie.FrameCount) .Append(GlobalWin.MovieSession.Movie.FrameCount)
.Append(" (Finished)"); .Append(" (Finished)");
return sb.ToString(); return sb.ToString();
} }
if (Global.MovieSession.Movie.IsPlayingOrFinished()) if (GlobalWin.MovieSession.Movie.IsPlayingOrFinished())
{ {
var sb = new StringBuilder(); var sb = new StringBuilder();
sb sb
.Append(GlobalWin.Emulator.Frame) .Append(GlobalWin.Emulator.Frame)
.Append('/') .Append('/')
.Append(Global.MovieSession.Movie.FrameCount); .Append(GlobalWin.MovieSession.Movie.FrameCount);
return sb.ToString(); return sb.ToString();
} }
@ -188,7 +188,7 @@ namespace BizHawk.Client.EmuHawk
public string InputStrMovie() public string InputStrMovie()
{ {
return MakeStringFor(Global.MovieSession.MovieController); return MakeStringFor(GlobalWin.MovieSession.MovieController);
} }
public string InputStrImmediate() public string InputStrImmediate()
@ -198,9 +198,9 @@ namespace BizHawk.Client.EmuHawk
public string InputPrevious() 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) if (state != null)
{ {
return MakeStringFor(state); return MakeStringFor(state);
@ -214,9 +214,9 @@ namespace BizHawk.Client.EmuHawk
{ {
IController m = Global.InputManager.AutofireStickyXorAdapter; 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); return MakeStringFor(m);
@ -229,11 +229,11 @@ namespace BizHawk.Client.EmuHawk
public string MakeIntersectImmediatePrevious() public string MakeIntersectImmediatePrevious()
{ {
if (Global.MovieSession.Movie.IsActive()) if (GlobalWin.MovieSession.Movie.IsActive())
{ {
var m = Global.MovieSession.Movie.IsPlayingOrRecording() var m = GlobalWin.MovieSession.Movie.IsPlayingOrRecording()
? Global.MovieSession.Movie.GetInputState(GlobalWin.Emulator.Frame - 1) ? GlobalWin.MovieSession.Movie.GetInputState(GlobalWin.Emulator.Frame - 1)
: Global.MovieSession.MovieController; : GlobalWin.MovieSession.MovieController;
return MakeStringFor(Global.InputManager.AutofireStickyXorAdapter.And(m)); return MakeStringFor(Global.InputManager.AutofireStickyXorAdapter.And(m));
} }
@ -243,8 +243,8 @@ namespace BizHawk.Client.EmuHawk
public string MakeRerecordCount() public string MakeRerecordCount()
{ {
return Global.MovieSession.Movie.IsActive() return GlobalWin.MovieSession.Movie.IsActive()
? Global.MovieSession.Movie.Rerecords.ToString() ? GlobalWin.MovieSession.Movie.Rerecords.ToString()
: ""; : "";
} }
@ -272,8 +272,8 @@ namespace BizHawk.Client.EmuHawk
if (GlobalWin.Config.DisplayInput && !GlobalWin.Game.IsNullInstance()) if (GlobalWin.Config.DisplayInput && !GlobalWin.Game.IsNullInstance())
{ {
if (Global.MovieSession.Movie.IsPlaying() if (GlobalWin.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 || (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 input = InputStrMovie();
var point = GetCoordinates(g, GlobalWin.Config.InputDisplay, input); 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); var point = GetCoordinates(g, GlobalWin.Config.MultitrackRecorder, GlobalWin.MovieSession.MultiTrack.Status);
DrawOsdMessage(g, Global.MovieSession.MultiTrack.Status, FixedMessagesColor, point.X, point.Y); DrawOsdMessage(g, GlobalWin.MovieSession.MultiTrack.Status, FixedMessagesColor, point.X, point.Y);
} }
if (GlobalWin.Config.DisplayFps && Fps != null) if (GlobalWin.Config.DisplayFps && Fps != null)
@ -368,9 +368,9 @@ namespace BizHawk.Client.EmuHawk
g.DrawString(message, MessageFont, Color.White, point.X, point.Y); 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) foreach (var sub in subList)
{ {

View File

@ -45,5 +45,6 @@ namespace BizHawk.Client.EmuHawk
public static Config Config { get; set; } public static Config Config { get; set; }
public static FirmwareManager FirmwareManager { get; set; } public static FirmwareManager FirmwareManager { get; set; }
public static GameInfo Game { get; set; } public static GameInfo Game { get; set; }
public static IMovieSession MovieSession { get; set; }
} }
} }

View File

@ -884,8 +884,8 @@ namespace BizHawk.Client.EmuHawk
public IMovieSession MovieSession public IMovieSession MovieSession
{ {
get => Global. MovieSession; get => GlobalWin.MovieSession;
private set => Global.MovieSession = value; private set => GlobalWin.MovieSession = value;
} }
private GameInfo Game private GameInfo Game

View File

@ -217,7 +217,7 @@ namespace BizHawk.Client.EmuHawk
{ {
GlobalWin.ExitCode = mf.ProgramRunLoop(); 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( 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)", "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) if (result == DialogResult.Yes)
{ {
Global.MovieSession.Movie.Save(); GlobalWin.MovieSession.Movie.Save();
} }
} }
} }

View File

@ -28,7 +28,7 @@ namespace BizHawk.Client.EmuHawk
_s = s ?? new Gameboy.GambatteSettings(); _s = s ?? new Gameboy.GambatteSettings();
_ss = ss ?? new Gameboy.GambatteSyncSettings(); _ss = ss ?? new Gameboy.GambatteSyncSettings();
propertyGrid1.SelectedObject = _ss; propertyGrid1.SelectedObject = _ss;
propertyGrid1.Enabled = Global.MovieSession.Movie.NotActive(); propertyGrid1.Enabled = GlobalWin.MovieSession.Movie.NotActive();
checkBoxMuted.Checked = _s.Muted; checkBoxMuted.Checked = _s.Muted;
cbDisplayBG.Checked = _s.DisplayBG; cbDisplayBG.Checked = _s.DisplayBG;
cbDisplayOBJ.Checked = _s.DisplayOBJ; cbDisplayOBJ.Checked = _s.DisplayOBJ;
@ -43,8 +43,8 @@ namespace BizHawk.Client.EmuHawk
private void ButtonDefaults_Click(object sender, EventArgs e) private void ButtonDefaults_Click(object sender, EventArgs e)
{ {
PutSettings(null, Global.MovieSession.Movie.IsActive() ? _ss : null); PutSettings(null, GlobalWin.MovieSession.Movie.IsActive() ? _ss : null);
if (Global.MovieSession.Movie.NotActive()) if (GlobalWin.MovieSession.Movie.NotActive())
{ {
SyncSettingsChanged = true; SyncSettingsChanged = true;
} }

View File

@ -52,7 +52,7 @@ namespace BizHawk.Client.EmuHawk
tabControl1.TabPages.Remove(tabPage2); 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 propertyGrid2.Enabled = false; // disable changes to sync setting when movie, so as not to confuse user
} }

View File

@ -24,7 +24,7 @@ namespace BizHawk.Client.EmuHawk
private void EditCommentsForm_Load(object sender, EventArgs e) private void EditCommentsForm_Load(object sender, EventArgs e)
{ {
if (!ForceReadWrite && Global.MovieSession.ReadOnly) if (!ForceReadWrite && GlobalWin.MovieSession.ReadOnly)
{ {
CommentGrid.Columns[0].ReadOnly = true; CommentGrid.Columns[0].ReadOnly = true;
Text = "View Comments"; Text = "View Comments";

View File

@ -377,7 +377,7 @@ namespace BizHawk.Client.EmuHawk
var branch = Tastudio.CurrentTasMovie.Branches.FirstOrDefault(b => b.Uuid.ToString() == branchId); var branch = Tastudio.CurrentTasMovie.Branches.FirstOrDefault(b => b.Uuid.ToString() == branchId);
if (branch != null && frame < branch.InputLog.Count) if (branch != null && frame < branch.InputLog.Count)
{ {
var controller = Global.MovieSession.GenerateMovieController(); var controller = GlobalWin.MovieSession.GenerateMovieController();
controller.SetFromMnemonic(branch.InputLog[frame]); controller.SetFromMnemonic(branch.InputLog[frame]);
foreach (var button in controller.Definition.BoolButtons) foreach (var button in controller.Definition.BoolButtons)

View File

@ -272,7 +272,7 @@ namespace BizHawk.Client.EmuHawk
private void GetPattern() 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") if (SelectedButton == "Default bool Auto-Fire")
{ {

View File

@ -19,7 +19,7 @@ namespace BizHawk.Client.EmuHawk
public override string ToString() public override string ToString()
{ {
var lg = Global.MovieSession.Movie.LogGeneratorInstance(ControllerState); var lg = GlobalWin.MovieSession.Movie.LogGeneratorInstance(ControllerState);
return lg.GenerateLogEntry(); return lg.GenerateLogEntry();
} }
@ -27,7 +27,7 @@ namespace BizHawk.Client.EmuHawk
{ {
try try
{ {
var controller = Global.MovieSession.GenerateMovieController(); var controller = GlobalWin.MovieSession.GenerateMovieController();
controller.SetFromMnemonic(inputLogEntry); controller.SetFromMnemonic(inputLogEntry);
foreach (var button in controller.Definition.BoolButtons) foreach (var button in controller.Definition.BoolButtons)