Pass the instance of MovieSession into movies, instead of referencing them from a global

This commit is contained in:
adelikat 2020-05-30 16:10:01 -05:00
parent 1711914488
commit ca39eca22c
11 changed files with 23 additions and 21 deletions

View File

@ -289,7 +289,7 @@ namespace BizHawk.Client.Common
public void RunQueuedMovie(bool recordMode, IEmulator emulator) public void RunQueuedMovie(bool recordMode, IEmulator emulator)
{ {
_queuedMovie.Attach(emulator); _queuedMovie.Attach(this, emulator);
foreach (var previousPref in _preferredCores) foreach (var previousPref in _preferredCores)
{ {
Global.Config.PreferredCores[previousPref.Key] = previousPref.Value; Global.Config.PreferredCores[previousPref.Key] = previousPref.Value;

View File

@ -39,7 +39,7 @@ namespace BizHawk.Client.Common
int? stateFrame = null; int? stateFrame = null;
// We are in record mode so replace the movie log with the one from the savestate // We are in record mode so replace the movie log with the one from the savestate
if (!Global.MovieSession.MultiTrack.IsActive) if (!Session.MultiTrack.IsActive)
{ {
if (Global.Config.EnableBackupMovies && MakeBackup && Log.Count != 0) if (Global.Config.EnableBackupMovies && MakeBackup && Log.Count != 0)
{ {

View File

@ -19,7 +19,7 @@ namespace BizHawk.Client.Common
Header[HeaderKeys.MovieVersion] = "BizHawk v2.0.0"; Header[HeaderKeys.MovieVersion] = "BizHawk v2.0.0";
} }
public virtual void Attach(IEmulator emulator) public virtual void Attach(IMovieSession session, IEmulator emulator)
{ {
if (!Emulator.IsNull()) if (!Emulator.IsNull())
{ {
@ -27,9 +27,11 @@ namespace BizHawk.Client.Common
} }
Emulator = emulator; Emulator = emulator;
Session = session;
} }
public IEmulator Emulator { get; private set; } public IEmulator Emulator { get; private set; }
public IMovieSession Session { get; private set; }
protected bool MakeBackup { get; set; } = true; protected bool MakeBackup { get; set; } = true;
@ -113,7 +115,7 @@ namespace BizHawk.Client.Common
{ {
// This is a bad way to do multitrack logic, pass the info in instead of going to the global // This is a bad way to do multitrack logic, pass the info in instead of going to the global
// and it is weird for Truncate to possibly not truncate // and it is weird for Truncate to possibly not truncate
if (!Global.MovieSession.MultiTrack.IsActive) if (!Session.MultiTrack.IsActive)
{ {
if (frame < Log.Count) if (frame < Log.Count)
{ {
@ -127,7 +129,7 @@ namespace BizHawk.Client.Common
{ {
if (frame < FrameCount && frame >= 0) if (frame < FrameCount && frame >= 0)
{ {
_adapter ??= new Bk2Controller(Global.MovieSession.MovieController.Definition); _adapter ??= new Bk2Controller(Session.MovieController.Definition);
_adapter.SetFromMnemonic(Log[frame]); _adapter.SetFromMnemonic(Log[frame]);
return _adapter; return _adapter;
} }
@ -144,7 +146,7 @@ namespace BizHawk.Client.Common
public virtual void ClearFrame(int frame) public virtual void ClearFrame(int frame)
{ {
var lg = LogGeneratorInstance(Global.MovieSession.MovieController); var lg = LogGeneratorInstance(Session.MovieController);
SetFrameAt(frame, lg.EmptyEntry); SetFrameAt(frame, lg.EmptyEntry);
Changes = true; Changes = true;
} }

View File

@ -234,7 +234,7 @@ namespace BizHawk.Client.Common
/// Thrown if attempting to attach a core when one is already attached /// Thrown if attempting to attach a core when one is already attached
/// or if the given core does not meet all required dependencies /// or if the given core does not meet all required dependencies
/// </exception> /// </exception>
void Attach(IEmulator emulator); void Attach(IMovieSession session, IEmulator emulator);
/// <summary> /// <summary>
/// The currently attached core or null if not yet attached /// The currently attached core or null if not yet attached

View File

@ -16,7 +16,7 @@ namespace BizHawk.Client.Common
Func<string> ClientSettingsForSave { set; } Func<string> ClientSettingsForSave { set; }
Action<string> GetClientSettingsOnLoad { set; } Action<string> GetClientSettingsOnLoad { set; }
ITasMovieRecord this[int index] { get; } ITasMovieRecord this[int index] { get; }
ITasSession Session { get; } ITasSession TasSession { get; }
TasMovieMarkerList Markers { get; } TasMovieMarkerList Markers { get; }
ITasBranchCollection Branches { get; } ITasBranchCollection Branches { get; }
TasLagLog LagLog { get; } TasLagLog LagLog { get; }

View File

@ -256,7 +256,7 @@ namespace BizHawk.Client.Common
frame = Log.Count(); frame = Log.Count();
} }
var lg = LogGeneratorInstance(Global.MovieSession.MovieController); var lg = LogGeneratorInstance(Session.MovieController);
Log.InsertRange(frame, Enumerable.Repeat(lg.EmptyEntry, count).ToList()); Log.InsertRange(frame, Enumerable.Repeat(lg.EmptyEntry, count).ToList());
ShiftBindedMarkers(frame, count); ShiftBindedMarkers(frame, count);
@ -273,7 +273,7 @@ namespace BizHawk.Client.Common
int oldLength = InputLogLength; int oldLength = InputLogLength;
ChangeLog.AddGeneralUndo(oldLength, oldLength + numFrames - 1); ChangeLog.AddGeneralUndo(oldLength, oldLength + numFrames - 1);
Global.MovieSession.MovieController.SetFromSticky(Global.InputManager.AutofireStickyXorAdapter); Session.MovieController.SetFromSticky(Global.InputManager.AutofireStickyXorAdapter);
// account for autohold. needs autohold pattern to be already recorded in the current frame // account for autohold. needs autohold pattern to be already recorded in the current frame
var lg = LogGeneratorInstance(Global.InputManager.MovieOutputHardpoint); var lg = LogGeneratorInstance(Global.InputManager.MovieOutputHardpoint);

View File

@ -64,7 +64,7 @@ namespace BizHawk.Client.Common
Branches.Save(bs); Branches.Save(bs);
} }
bs.PutLump(BinaryStateLump.Session, tw => tw.WriteLine(JsonConvert.SerializeObject(Session))); bs.PutLump(BinaryStateLump.Session, tw => tw.WriteLine(JsonConvert.SerializeObject(TasSession)));
if (TasStateManager.Settings.SaveStateHistory && !backup) if (TasStateManager.Settings.SaveStateHistory && !backup)
{ {
@ -253,7 +253,7 @@ namespace BizHawk.Client.Common
var json = tr.ReadToEnd(); var json = tr.ReadToEnd();
try try
{ {
Session = JsonConvert.DeserializeObject<TasSession>(json); TasSession = JsonConvert.DeserializeObject<TasSession>(json);
} }
catch catch
{ {

View File

@ -25,7 +25,7 @@ namespace BizHawk.Client.Common
Markers.Add(0, startsFromSavestate ? "Savestate" : "Power on"); Markers.Add(0, startsFromSavestate ? "Savestate" : "Power on");
} }
public override void Attach(IEmulator emulator) public override void Attach(IMovieSession session, IEmulator emulator)
{ {
if (!emulator.HasSavestates()) if (!emulator.HasSavestates())
{ {
@ -39,12 +39,12 @@ namespace BizHawk.Client.Common
_inputPollable = emulator.AsInputPollable(); _inputPollable = emulator.AsInputPollable();
TasStateManager.Attach(emulator); TasStateManager.Attach(emulator);
base.Attach(emulator); base.Attach(session, emulator);
} }
public IStringLog VerificationLog { get; } = StringLogUtil.MakeStringLog(); // For movies that do not begin with power-on, this is the input required to get into the initial state public IStringLog VerificationLog { get; } = StringLogUtil.MakeStringLog(); // For movies that do not begin with power-on, this is the input required to get into the initial state
public ITasBranchCollection Branches { get; } public ITasBranchCollection Branches { get; }
public ITasSession Session { get; private set; } = new TasSession(); public ITasSession TasSession { get; private set; } = new TasSession();
public int LastEditedFrame { get; private set; } = -1; public int LastEditedFrame { get; private set; } = -1;
public bool LastPositionStable { get; set; } = true; public bool LastPositionStable { get; set; } = true;
@ -97,7 +97,7 @@ namespace BizHawk.Client.Common
} }
LastEditedFrame = frame; LastEditedFrame = frame;
if (anyInvalidated && Global.MovieSession.Movie.IsCountingRerecords) if (anyInvalidated && IsCountingRerecords)
{ {
Rerecords++; Rerecords++;
} }
@ -185,7 +185,7 @@ namespace BizHawk.Client.Common
var newLog = new List<string>(); var newLog = new List<string>();
// We are in record mode so replace the movie log with the one from the savestate // We are in record mode so replace the movie log with the one from the savestate
if (!Global.MovieSession.MultiTrack.IsActive) if (!Session.MultiTrack.IsActive)
{ {
_timelineBranchFrame = null; _timelineBranchFrame = null;

View File

@ -130,7 +130,7 @@ namespace BizHawk.Client.EmuHawk
Branches.Add(branch); Branches.Add(branch);
BranchView.RowCount = Branches.Count; BranchView.RowCount = Branches.Count;
Branches.Current = Branches.Count - 1; Branches.Current = Branches.Count - 1;
Movie.Session.UpdateValues(Tastudio.Emulator.Frame, Branches.Current); Movie.TasSession.UpdateValues(Tastudio.Emulator.Frame, Branches.Current);
BranchView.ScrollToIndex(Branches.Current); BranchView.ScrollToIndex(Branches.Current);
Select(Branches.Current, true); Select(Branches.Current, true);
BranchView.Refresh(); BranchView.Refresh();

View File

@ -52,7 +52,7 @@ namespace BizHawk.Client.EmuHawk
refreshNeeded = AutoAdjustInput(); refreshNeeded = AutoAdjustInput();
} }
CurrentTasMovie.Session.UpdateValues(Emulator.Frame, CurrentTasMovie.Branches.Current); CurrentTasMovie.TasSession.UpdateValues(Emulator.Frame, CurrentTasMovie.Branches.Current);
MaybeFollowCursor(); MaybeFollowCursor();
if (TasView.IsPartiallyVisible(Emulator.Frame) || TasView.IsPartiallyVisible(_lastRefresh)) if (TasView.IsPartiallyVisible(Emulator.Frame) || TasView.IsPartiallyVisible(_lastRefresh))

View File

@ -644,7 +644,7 @@ namespace BizHawk.Client.EmuHawk
} }
else else
{ {
GoToFrame(CurrentTasMovie.Session.CurrentFrame); GoToFrame(CurrentTasMovie.TasSession.CurrentFrame);
} }
// If we are loading an existing non-default movie, we will already have columns generated // If we are loading an existing non-default movie, we will already have columns generated
@ -657,7 +657,7 @@ namespace BizHawk.Client.EmuHawk
SetUpToolStripColumns(); SetUpToolStripColumns();
CurrentTasMovie.PropertyChanged += TasMovie_OnPropertyChanged; CurrentTasMovie.PropertyChanged += TasMovie_OnPropertyChanged;
CurrentTasMovie.Branches.Current = CurrentTasMovie.Session.CurrentBranch; CurrentTasMovie.Branches.Current = CurrentTasMovie.TasSession.CurrentBranch;
BookMarkControl.UpdateTextColumnWidth(); BookMarkControl.UpdateTextColumnWidth();
MarkerControl.UpdateTextColumnWidth(); MarkerControl.UpdateTextColumnWidth();
// clear all selections // clear all selections