interface the MovieSettings class to be get only and pass it into movie session, this is a pattern we should use more, to better express that consuming classes do not modify settings, that's a presentation level detail
This commit is contained in:
parent
a3c82c43d5
commit
943d704ca5
|
@ -1,6 +1,16 @@
|
||||||
namespace BizHawk.Client.Common
|
namespace BizHawk.Client.Common
|
||||||
{
|
{
|
||||||
public class MovieConfig
|
public interface IMovieConfig
|
||||||
|
{
|
||||||
|
public MovieEndAction MovieEndAction { get; }
|
||||||
|
public bool EnableBackupMovies { get; }
|
||||||
|
public bool MoviesOnDisk { get; }
|
||||||
|
public int MovieCompressionLevel { get; }
|
||||||
|
public bool VBAStyleMovieLoadState { get; }
|
||||||
|
public bool MoviePlaybackPokeMode { get; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class MovieConfig : IMovieConfig
|
||||||
{
|
{
|
||||||
public MovieEndAction MovieEndAction { get; set; } = MovieEndAction.Finish;
|
public MovieEndAction MovieEndAction { get; set; } = MovieEndAction.Finish;
|
||||||
public bool EnableBackupMovies { get; set; } = true;
|
public bool EnableBackupMovies { get; set; } = true;
|
||||||
|
|
|
@ -12,6 +12,7 @@ namespace BizHawk.Client.Common
|
||||||
|
|
||||||
public class MovieSession : IMovieSession
|
public class MovieSession : IMovieSession
|
||||||
{
|
{
|
||||||
|
private readonly IMovieConfig _settings;
|
||||||
private readonly Action _pauseCallback;
|
private readonly Action _pauseCallback;
|
||||||
private readonly Action _modeChangedCallback;
|
private readonly Action _modeChangedCallback;
|
||||||
private readonly Action<string> _messageCallback;
|
private readonly Action<string> _messageCallback;
|
||||||
|
@ -24,11 +25,13 @@ namespace BizHawk.Client.Common
|
||||||
private readonly IDictionary<string, string> _preferredCores = new Dictionary<string, string>();
|
private readonly IDictionary<string, string> _preferredCores = new Dictionary<string, string>();
|
||||||
|
|
||||||
public MovieSession(
|
public MovieSession(
|
||||||
|
IMovieConfig settings,
|
||||||
Action<string> messageCallback,
|
Action<string> messageCallback,
|
||||||
Action<string> popupCallback,
|
Action<string> popupCallback,
|
||||||
Action pauseCallback,
|
Action pauseCallback,
|
||||||
Action modeChangedCallback)
|
Action modeChangedCallback)
|
||||||
{
|
{
|
||||||
|
_settings = settings;
|
||||||
_messageCallback = messageCallback;
|
_messageCallback = messageCallback;
|
||||||
_popupCallback = popupCallback;
|
_popupCallback = popupCallback;
|
||||||
_pauseCallback = pauseCallback
|
_pauseCallback = pauseCallback
|
||||||
|
@ -119,7 +122,7 @@ namespace BizHawk.Client.Common
|
||||||
LatchInputToUser();
|
LatchInputToUser();
|
||||||
ClearFrame();
|
ClearFrame();
|
||||||
}
|
}
|
||||||
else if (Global.Config.Movies.MoviePlaybackPokeMode)
|
else if (_settings.MoviePlaybackPokeMode)
|
||||||
{
|
{
|
||||||
LatchInputToUser();
|
LatchInputToUser();
|
||||||
var lg = Movie.LogGeneratorInstance(Global.InputManager.MovieOutputHardpoint);
|
var lg = Movie.LogGeneratorInstance(Global.InputManager.MovieOutputHardpoint);
|
||||||
|
@ -310,7 +313,7 @@ namespace BizHawk.Client.Common
|
||||||
{
|
{
|
||||||
if (Movie.IsActive())
|
if (Movie.IsActive())
|
||||||
{
|
{
|
||||||
if (Global.Config.Movies.VBAStyleMovieLoadState)
|
if (_settings.VBAStyleMovieLoadState)
|
||||||
{
|
{
|
||||||
Output("Multi-track can not be used in Full Movie Loadstates mode");
|
Output("Multi-track can not be used in Full Movie Loadstates mode");
|
||||||
}
|
}
|
||||||
|
@ -452,7 +455,7 @@ namespace BizHawk.Client.Common
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: mainform callback to update on mode change
|
// TODO: mainform callback to update on mode change
|
||||||
switch (Global.Config.Movies.MovieEndAction)
|
switch (_settings.MovieEndAction)
|
||||||
{
|
{
|
||||||
case MovieEndAction.Stop:
|
case MovieEndAction.Stop:
|
||||||
Movie.Stop();
|
Movie.Stop();
|
||||||
|
|
|
@ -206,6 +206,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
Global.InputManager.ControllerInputCoalescer = new ControllerInputCoalescer();
|
Global.InputManager.ControllerInputCoalescer = new ControllerInputCoalescer();
|
||||||
Global.FirmwareManager = new FirmwareManager();
|
Global.FirmwareManager = new FirmwareManager();
|
||||||
MovieSession = new MovieSession(
|
MovieSession = new MovieSession(
|
||||||
|
Config.Movies,
|
||||||
AddOnScreenMessage,
|
AddOnScreenMessage,
|
||||||
ShowMessageCoreComm,
|
ShowMessageCoreComm,
|
||||||
PauseEmulator,
|
PauseEmulator,
|
||||||
|
|
Loading…
Reference in New Issue