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:
adelikat 2020-06-02 19:15:53 -05:00
parent a3c82c43d5
commit 943d704ca5
3 changed files with 18 additions and 4 deletions

View File

@ -1,6 +1,16 @@
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 bool EnableBackupMovies { get; set; } = true;

View File

@ -12,6 +12,7 @@ namespace BizHawk.Client.Common
public class MovieSession : IMovieSession
{
private readonly IMovieConfig _settings;
private readonly Action _pauseCallback;
private readonly Action _modeChangedCallback;
private readonly Action<string> _messageCallback;
@ -24,11 +25,13 @@ namespace BizHawk.Client.Common
private readonly IDictionary<string, string> _preferredCores = new Dictionary<string, string>();
public MovieSession(
IMovieConfig settings,
Action<string> messageCallback,
Action<string> popupCallback,
Action pauseCallback,
Action modeChangedCallback)
{
_settings = settings;
_messageCallback = messageCallback;
_popupCallback = popupCallback;
_pauseCallback = pauseCallback
@ -119,7 +122,7 @@ namespace BizHawk.Client.Common
LatchInputToUser();
ClearFrame();
}
else if (Global.Config.Movies.MoviePlaybackPokeMode)
else if (_settings.MoviePlaybackPokeMode)
{
LatchInputToUser();
var lg = Movie.LogGeneratorInstance(Global.InputManager.MovieOutputHardpoint);
@ -310,7 +313,7 @@ namespace BizHawk.Client.Common
{
if (Movie.IsActive())
{
if (Global.Config.Movies.VBAStyleMovieLoadState)
if (_settings.VBAStyleMovieLoadState)
{
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
switch (Global.Config.Movies.MovieEndAction)
switch (_settings.MovieEndAction)
{
case MovieEndAction.Stop:
Movie.Stop();

View File

@ -206,6 +206,7 @@ namespace BizHawk.Client.EmuHawk
Global.InputManager.ControllerInputCoalescer = new ControllerInputCoalescer();
Global.FirmwareManager = new FirmwareManager();
MovieSession = new MovieSession(
Config.Movies,
AddOnScreenMessage,
ShowMessageCoreComm,
PauseEmulator,