more MovieSession refactoring
This commit is contained in:
parent
0d794f2b12
commit
0aa8d71a3f
|
@ -12,7 +12,7 @@ namespace BizHawk.Client.Common
|
|||
public static CheatCollection CheatList { get; set; } = new CheatCollection();
|
||||
public static FirmwareManager FirmwareManager { get; set; }
|
||||
|
||||
public static IMovieSession MovieSession { get; set; } = new MovieSession();
|
||||
public static IMovieSession MovieSession { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Used to disable secondary throttling (e.g. vsync, audio) for unthrottled modes or when the primary (clock) throttle is taking over (e.g. during fast forward/rewind).
|
||||
|
|
|
@ -16,21 +16,26 @@ namespace BizHawk.Client.Common
|
|||
|
||||
public class MovieSession : IMovieSession
|
||||
{
|
||||
public Action<string> MessageCallback { get; set; }
|
||||
public Action<string> PopupCallback { get; set; }
|
||||
public Func<string, string, bool> AskYesNoCallback { get; set; }
|
||||
private readonly Action _pauseCallback;
|
||||
private readonly Action _modeChangedCallback;
|
||||
private readonly Action<string> _messageCallback;
|
||||
private readonly Action<string> _popupCallback;
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets a callback that allows the movie session to pause the emulator
|
||||
/// This is Required!
|
||||
/// </summary>
|
||||
public Action PauseCallback { get; set; }
|
||||
public MovieSession(
|
||||
Action<string> messageCallback,
|
||||
Action<string> popupCallback,
|
||||
Action pauseCallback,
|
||||
Action modeChangedCallback)
|
||||
{
|
||||
_messageCallback = messageCallback;
|
||||
_popupCallback = popupCallback;
|
||||
_pauseCallback = pauseCallback
|
||||
?? throw new ArgumentNullException($"{nameof(pauseCallback)} cannot be null.");
|
||||
_modeChangedCallback = modeChangedCallback
|
||||
?? throw new ArgumentNullException($"{nameof(modeChangedCallback)} CannotUnloadAppDomainException be null.");
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets a callback that is invoked when the movie mode has changed
|
||||
/// This is Required!
|
||||
/// </summary>
|
||||
public Action ModeChangedCallback { get; set; }
|
||||
Movie = MovieService.DefaultInstance;
|
||||
}
|
||||
|
||||
public IMovie Movie { get; set; }
|
||||
public IMovie QueuedMovie { get; private set; }
|
||||
|
@ -390,7 +395,7 @@ namespace BizHawk.Client.Common
|
|||
}
|
||||
|
||||
MultiTrack.Restart(Global.Emulator.ControllerDefinition.PlayerCount);
|
||||
ModeChangedCallback();
|
||||
_modeChangedCallback();
|
||||
}
|
||||
|
||||
private void ClearFrame()
|
||||
|
@ -404,12 +409,12 @@ namespace BizHawk.Client.Common
|
|||
|
||||
private void PopupMessage(string message)
|
||||
{
|
||||
PopupCallback?.Invoke(message);
|
||||
_popupCallback?.Invoke(message);
|
||||
}
|
||||
|
||||
private void Output(string message)
|
||||
{
|
||||
MessageCallback?.Invoke(message);
|
||||
_messageCallback?.Invoke(message);
|
||||
}
|
||||
|
||||
private void LatchInputToMultitrackUser()
|
||||
|
@ -487,7 +492,7 @@ namespace BizHawk.Client.Common
|
|||
break;
|
||||
case MovieEndAction.Pause:
|
||||
Movie.FinishedMode();
|
||||
PauseCallback();
|
||||
_pauseCallback();
|
||||
break;
|
||||
default:
|
||||
case MovieEndAction.Finish:
|
||||
|
@ -495,7 +500,7 @@ namespace BizHawk.Client.Common
|
|||
break;
|
||||
}
|
||||
|
||||
ModeChangedCallback();
|
||||
_modeChangedCallback();
|
||||
}
|
||||
|
||||
private void HandleFrameLoopForRecordMode()
|
||||
|
|
|
@ -207,15 +207,11 @@ namespace BizHawk.Client.EmuHawk
|
|||
|
||||
Global.InputManager.ControllerInputCoalescer = new ControllerInputCoalescer();
|
||||
Global.FirmwareManager = new FirmwareManager();
|
||||
MovieSession = new MovieSession
|
||||
{
|
||||
Movie = MovieService.DefaultInstance,
|
||||
MessageCallback = AddOnScreenMessage,
|
||||
PopupCallback = ShowMessageCoreComm,
|
||||
AskYesNoCallback = StateErrorAskUser,
|
||||
PauseCallback = PauseEmulator,
|
||||
ModeChangedCallback = SetMainformMovieInfo
|
||||
};
|
||||
MovieSession = new MovieSession(
|
||||
AddOnScreenMessage,
|
||||
ShowMessageCoreComm,
|
||||
PauseEmulator,
|
||||
SetMainformMovieInfo);
|
||||
|
||||
Icon = Properties.Resources.logo;
|
||||
InitializeComponent();
|
||||
|
|
Loading…
Reference in New Issue