Config - move some movie settings to a MovieConfig object

This commit is contained in:
adelikat 2020-06-02 17:34:16 -05:00
parent a8b0d42a1a
commit a3c82c43d5
15 changed files with 48 additions and 42 deletions

View File

@ -79,8 +79,6 @@ namespace BizHawk.Client.Common
public bool AllowUdlr { get; set; } public bool AllowUdlr { get; set; }
public bool ForbidUdlr { get; set; } public bool ForbidUdlr { get; set; }
public bool ShowContextMenu { get; set; } = true; public bool ShowContextMenu { get; set; } = true;
public bool EnableBackupMovies { get; set; } = true;
public bool MoviesOnDisk { get; set; }
public bool HotkeyConfigAutoTab { get; set; } = true; public bool HotkeyConfigAutoTab { get; set; } = true;
public bool InputConfigAutoTab { get; set; } = true; public bool InputConfigAutoTab { get; set; } = true;
public bool SkipWaterboxIntegrityChecks { get; set; } = false; public bool SkipWaterboxIntegrityChecks { get; set; } = false;
@ -120,8 +118,6 @@ namespace BizHawk.Client.Common
public bool TurboSeek { get; set; } public bool TurboSeek { get; set; }
public MovieEndAction MovieEndAction { get; set; } = MovieEndAction.Finish;
public ClientProfile SelectedProfile { get; set; } = ClientProfile.Unknown; public ClientProfile SelectedProfile { get; set; } = ClientProfile.Unknown;
// N64 // N64
@ -140,6 +136,8 @@ namespace BizHawk.Client.Common
public SaveStateConfig Savestates { get; set; } = new SaveStateConfig(); public SaveStateConfig Savestates { get; set; } = new SaveStateConfig();
public MovieConfig Movies { get; set; } = new MovieConfig();
/// <summary> /// <summary>
/// Use vsync when presenting all 3d accelerated windows. /// Use vsync when presenting all 3d accelerated windows.
/// For the main window, if VSyncThrottle = false, this will try to use vsync without throttling to it /// For the main window, if VSyncThrottle = false, this will try to use vsync without throttling to it
@ -279,8 +277,6 @@ namespace BizHawk.Client.Common
public string DefaultAuthor { get; set; } = "default user"; public string DefaultAuthor { get; set; } = "default user";
public bool UseDefaultAuthor { get; set; } = true; public bool UseDefaultAuthor { get; set; } = true;
public bool DisplaySubtitles { get; set; } = true; public bool DisplaySubtitles { get; set; } = true;
public bool VBAStyleMovieLoadState { get; set; }
public bool MoviePlaybackPokeMode { get; set; }
// Play Movie Dialog // Play Movie Dialog
public bool PlayMovieIncludeSubDir { get; set; } public bool PlayMovieIncludeSubDir { get; set; }

View File

@ -0,0 +1,12 @@
namespace BizHawk.Client.Common
{
public class MovieConfig
{
public MovieEndAction MovieEndAction { get; set; } = MovieEndAction.Finish;
public bool EnableBackupMovies { get; set; } = true;
public bool MoviesOnDisk { get; set; }
public int MovieCompressionLevel { get; set; } = 2;
public bool VBAStyleMovieLoadState { get; set; }
public bool MoviePlaybackPokeMode { get; set; }
}
}

View File

@ -7,8 +7,6 @@
public int CompressionLevelNormal { get; set; } = DefaultCompressionLevelNormal; public int CompressionLevelNormal { get; set; } = DefaultCompressionLevelNormal;
public const int DefaultCompressionLevelRewind = 0; // this isn't actually used yet public const int DefaultCompressionLevelRewind = 0; // this isn't actually used yet
public int CompressionLevelRewind { get; set; } = DefaultCompressionLevelRewind; // this isn't actually used yet public int CompressionLevelRewind { get; set; } = DefaultCompressionLevelRewind; // this isn't actually used yet
public int MovieCompressionLevel { get; set; } = 2;
public bool MakeBackups { get; set; } = true; public bool MakeBackups { get; set; } = true;
public bool SaveScreenshot { get; set; } = true; public bool SaveScreenshot { get; set; } = true;
public int BigScreenshotSize { get; set; } = 128 * 1024; public int BigScreenshotSize { get; set; } = 128 * 1024;

View File

@ -119,7 +119,7 @@ namespace BizHawk.Client.Common
LatchInputToUser(); LatchInputToUser();
ClearFrame(); ClearFrame();
} }
else if (Global.Config.MoviePlaybackPokeMode) else if (Global.Config.Movies.MoviePlaybackPokeMode)
{ {
LatchInputToUser(); LatchInputToUser();
var lg = Movie.LogGeneratorInstance(Global.InputManager.MovieOutputHardpoint); var lg = Movie.LogGeneratorInstance(Global.InputManager.MovieOutputHardpoint);
@ -310,7 +310,7 @@ namespace BizHawk.Client.Common
{ {
if (Movie.IsActive()) if (Movie.IsActive())
{ {
if (Global.Config.VBAStyleMovieLoadState) if (Global.Config.Movies.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 +452,7 @@ namespace BizHawk.Client.Common
} }
// TODO: mainform callback to update on mode change // TODO: mainform callback to update on mode change
switch (Global.Config.MovieEndAction) switch (Global.Config.Movies.MovieEndAction)
{ {
case MovieEndAction.Stop: case MovieEndAction.Stop:
Movie.Stop(); Movie.Stop();

View File

@ -160,7 +160,7 @@ namespace BizHawk.Client.Common
SetCycleValues(); // We are pretending these only need to be set on save SetCycleValues(); // We are pretending these only need to be set on save
CreateDirectoryIfNotExists(fn); CreateDirectoryIfNotExists(fn);
using var bs = new ZipStateSaver(fn, Global.Config.Savestates.MovieCompressionLevel); using var bs = new ZipStateSaver(fn, Global.Config.Movies.MovieCompressionLevel);
AddLumps(bs); AddLumps(bs);
if (!isBackup) if (!isBackup)

View File

@ -41,7 +41,7 @@ namespace BizHawk.Client.Common
// 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) // TODO: this is run before being attached if (!Global.MovieSession.MultiTrack.IsActive) // TODO: this is run before being attached
{ {
if (Global.Config.EnableBackupMovies && MakeBackup && Log.Count != 0) if (Global.Config.Movies.EnableBackupMovies && MakeBackup && Log.Count != 0)
{ {
SaveBackup(); SaveBackup();
MakeBackup = false; MakeBackup = false;
@ -153,14 +153,14 @@ namespace BizHawk.Client.Common
if (stateFramei.StrictlyBoundedBy(0.RangeTo(Log.Count))) if (stateFramei.StrictlyBoundedBy(0.RangeTo(Log.Count)))
{ {
if (!Global.Config.VBAStyleMovieLoadState) if (!Global.Config.Movies.VBAStyleMovieLoadState)
{ {
Truncate(stateFramei); Truncate(stateFramei);
} }
} }
else if (stateFramei > Log.Count) // Post movie savestate else if (stateFramei > Log.Count) // Post movie savestate
{ {
if (!Global.Config.VBAStyleMovieLoadState) if (!Global.Config.Movies.VBAStyleMovieLoadState)
{ {
Truncate(Log.Count); Truncate(Log.Count);
} }

View File

@ -9,7 +9,7 @@ namespace BizHawk.Client.Common
public virtual void StartNewRecording() public virtual void StartNewRecording()
{ {
Mode = MovieMode.Record; Mode = MovieMode.Record;
if (Global.Config.EnableBackupMovies && MakeBackup && Log.Any()) if (Global.Config.Movies.EnableBackupMovies && MakeBackup && Log.Any())
{ {
SaveBackup(); SaveBackup();
MakeBackup = false; MakeBackup = false;

View File

@ -101,7 +101,7 @@ namespace BizHawk.Client.Common
public virtual void RecordFrame(int frame, IController source) public virtual void RecordFrame(int frame, IController source)
{ {
if (Global.Config.VBAStyleMovieLoadState) if (Global.Config.Movies.VBAStyleMovieLoadState)
{ {
if (Emulator.Frame < Log.Count) if (Emulator.Frame < Log.Count)
{ {

View File

@ -189,7 +189,7 @@ namespace BizHawk.Client.Common
{ {
_timelineBranchFrame = null; _timelineBranchFrame = null;
if (Global.Config.EnableBackupMovies && MakeBackup && Log.Count != 0) if (Global.Config.Movies.EnableBackupMovies && MakeBackup && Log.Count != 0)
{ {
SaveBackup(); SaveBackup();
MakeBackup = false; MakeBackup = false;
@ -308,14 +308,14 @@ namespace BizHawk.Client.Common
if (stateFrameValue > 0 && stateFrameValue < Log.Count) if (stateFrameValue > 0 && stateFrameValue < Log.Count)
{ {
if (!Global.Config.VBAStyleMovieLoadState) if (!Global.Config.Movies.VBAStyleMovieLoadState)
{ {
Truncate(stateFrameValue); Truncate(stateFrameValue);
} }
} }
else if (stateFrameValue > Log.Count) // Post movie savestate else if (stateFrameValue > Log.Count) // Post movie savestate
{ {
if (!Global.Config.VBAStyleMovieLoadState) if (!Global.Config.Movies.VBAStyleMovieLoadState)
{ {
Truncate(Log.Count); Truncate(Log.Count);
} }

View File

@ -241,8 +241,8 @@ namespace BizHawk.Client.EmuHawk
= MovieSession.Movie.IsActive(); = MovieSession.Movie.IsActive();
ReadonlyMenuItem.Checked = MovieSession.ReadOnly; ReadonlyMenuItem.Checked = MovieSession.ReadOnly;
AutomaticallyBackupMoviesMenuItem.Checked = Config.EnableBackupMovies; AutomaticallyBackupMoviesMenuItem.Checked = Config.Movies.EnableBackupMovies;
FullMovieLoadstatesMenuItem.Checked = Config.VBAStyleMovieLoadState; FullMovieLoadstatesMenuItem.Checked = Config.Movies.VBAStyleMovieLoadState;
ReadonlyMenuItem.ShortcutKeyDisplayString = Config.HotkeyBindings["Toggle read-only"].Bindings; ReadonlyMenuItem.ShortcutKeyDisplayString = Config.HotkeyBindings["Toggle read-only"].Bindings;
RecordMovieMenuItem.ShortcutKeyDisplayString = Config.HotkeyBindings["Record Movie"].Bindings; RecordMovieMenuItem.ShortcutKeyDisplayString = Config.HotkeyBindings["Record Movie"].Bindings;
@ -272,10 +272,10 @@ namespace BizHawk.Client.EmuHawk
private void MovieEndSubMenu_DropDownOpened(object sender, EventArgs e) private void MovieEndSubMenu_DropDownOpened(object sender, EventArgs e)
{ {
MovieEndFinishMenuItem.Checked = Config.MovieEndAction == MovieEndAction.Finish; MovieEndFinishMenuItem.Checked = Config.Movies.MovieEndAction == MovieEndAction.Finish;
MovieEndRecordMenuItem.Checked = Config.MovieEndAction == MovieEndAction.Record; MovieEndRecordMenuItem.Checked = Config.Movies.MovieEndAction == MovieEndAction.Record;
MovieEndStopMenuItem.Checked = Config.MovieEndAction == MovieEndAction.Stop; MovieEndStopMenuItem.Checked = Config.Movies.MovieEndAction == MovieEndAction.Stop;
MovieEndPauseMenuItem.Checked = Config.MovieEndAction == MovieEndAction.Pause; MovieEndPauseMenuItem.Checked = Config.Movies.MovieEndAction == MovieEndAction.Pause;
// Arguably an IControlMainForm property should be set here, but in reality only Tastudio is ever going to interfere with this logic // Arguably an IControlMainForm property should be set here, but in reality only Tastudio is ever going to interfere with this logic
MovieEndFinishMenuItem.Enabled = MovieEndFinishMenuItem.Enabled =
@ -564,7 +564,7 @@ namespace BizHawk.Client.EmuHawk
private void StopMovieWithoutSavingMenuItem_Click(object sender, EventArgs e) private void StopMovieWithoutSavingMenuItem_Click(object sender, EventArgs e)
{ {
if (Config.EnableBackupMovies) if (Config.Movies.EnableBackupMovies)
{ {
MovieSession.Movie.SaveBackup(); MovieSession.Movie.SaveBackup();
} }
@ -574,32 +574,32 @@ namespace BizHawk.Client.EmuHawk
private void AutomaticMovieBackupMenuItem_Click(object sender, EventArgs e) private void AutomaticMovieBackupMenuItem_Click(object sender, EventArgs e)
{ {
Config.EnableBackupMovies ^= true; Config.Movies.EnableBackupMovies ^= true;
} }
private void FullMovieLoadstatesMenuItem_Click(object sender, EventArgs e) private void FullMovieLoadstatesMenuItem_Click(object sender, EventArgs e)
{ {
Config.VBAStyleMovieLoadState ^= true; Config.Movies.VBAStyleMovieLoadState ^= true;
} }
private void MovieEndFinishMenuItem_Click(object sender, EventArgs e) private void MovieEndFinishMenuItem_Click(object sender, EventArgs e)
{ {
Config.MovieEndAction = MovieEndAction.Finish; Config.Movies.MovieEndAction = MovieEndAction.Finish;
} }
private void MovieEndRecordMenuItem_Click(object sender, EventArgs e) private void MovieEndRecordMenuItem_Click(object sender, EventArgs e)
{ {
Config.MovieEndAction = MovieEndAction.Record; Config.Movies.MovieEndAction = MovieEndAction.Record;
} }
private void MovieEndStopMenuItem_Click(object sender, EventArgs e) private void MovieEndStopMenuItem_Click(object sender, EventArgs e)
{ {
Config.MovieEndAction = MovieEndAction.Stop; Config.Movies.MovieEndAction = MovieEndAction.Stop;
} }
private void MovieEndPauseMenuItem_Click(object sender, EventArgs e) private void MovieEndPauseMenuItem_Click(object sender, EventArgs e)
{ {
Config.MovieEndAction = MovieEndAction.Pause; Config.Movies.MovieEndAction = MovieEndAction.Pause;
} }
private void ConfigAndRecordAVMenuItem_Click(object sender, EventArgs e) private void ConfigAndRecordAVMenuItem_Click(object sender, EventArgs e)

View File

@ -2652,8 +2652,8 @@ namespace BizHawk.Client.EmuHawk
private void ToggleModePokeMode() private void ToggleModePokeMode()
{ {
Config.MoviePlaybackPokeMode ^= true; Config.Movies.MoviePlaybackPokeMode ^= true;
AddOnScreenMessage($"Movie Poke mode {(Config.MoviePlaybackPokeMode ? "enabled" : "disabled")}"); AddOnScreenMessage($"Movie Poke mode {(Config.Movies.MoviePlaybackPokeMode ? "enabled" : "disabled")}");
} }
private void ToggleBackgroundInput() private void ToggleBackgroundInput()

View File

@ -120,7 +120,7 @@ namespace BizHawk.Client.EmuHawk
Global.Config.ResolveDefaults(); Global.Config.ResolveDefaults();
StringLogUtil.DefaultToDisk = Global.Config.MoviesOnDisk; StringLogUtil.DefaultToDisk = Global.Config.Movies.MoviesOnDisk;
// super hacky! this needs to be done first. still not worth the trouble to make this system fully proper // super hacky! this needs to be done first. still not worth the trouble to make this system fully proper
if (Array.Exists(args, arg => arg.StartsWith("--gdi", StringComparison.InvariantCultureIgnoreCase))) if (Array.Exists(args, arg => arg.StartsWith("--gdi", StringComparison.InvariantCultureIgnoreCase)))

View File

@ -74,7 +74,7 @@ namespace BizHawk.Client.EmuHawk
AutosaveSaveRAMSeconds = _config.FlushSaveRamFrames / 60; AutosaveSaveRAMSeconds = _config.FlushSaveRamFrames / 60;
FrameAdvSkipLagCheckbox.Checked = _config.SkipLagFrame; FrameAdvSkipLagCheckbox.Checked = _config.SkipLagFrame;
LuaDuringTurboCheckbox.Checked = _config.RunLuaDuringTurbo; LuaDuringTurboCheckbox.Checked = _config.RunLuaDuringTurbo;
cbMoviesOnDisk.Checked = _config.MoviesOnDisk; cbMoviesOnDisk.Checked = _config.Movies.MoviesOnDisk;
cbSkipWaterboxIntegrityChecks.Checked = _config.SkipWaterboxIntegrityChecks; cbSkipWaterboxIntegrityChecks.Checked = _config.SkipWaterboxIntegrityChecks;
switch (_config.HostInputMethod) switch (_config.HostInputMethod)
@ -128,7 +128,7 @@ namespace BizHawk.Client.EmuHawk
_config.SkipLagFrame = FrameAdvSkipLagCheckbox.Checked; _config.SkipLagFrame = FrameAdvSkipLagCheckbox.Checked;
_config.RunLuaDuringTurbo = LuaDuringTurboCheckbox.Checked; _config.RunLuaDuringTurbo = LuaDuringTurboCheckbox.Checked;
_config.MoviesOnDisk = cbMoviesOnDisk.Checked; _config.Movies.MoviesOnDisk = cbMoviesOnDisk.Checked;
_config.SkipWaterboxIntegrityChecks = cbSkipWaterboxIntegrityChecks.Checked; _config.SkipWaterboxIntegrityChecks = cbSkipWaterboxIntegrityChecks.Checked;
var prevLuaEngine = _config.LuaEngine; var prevLuaEngine = _config.LuaEngine;

View File

@ -194,7 +194,7 @@ namespace BizHawk.Client.EmuHawk
if (movie.InputLogLength >= _emulator.Frame) if (movie.InputLogLength >= _emulator.Frame)
{ {
movie.SwitchToPlay(); movie.SwitchToPlay();
Global.Config.MovieEndAction = MovieEndAction.Record; Global.Config.Movies.MovieEndAction = MovieEndAction.Record;
} }
} }

View File

@ -276,9 +276,9 @@ namespace BizHawk.Client.EmuHawk
SetTasMovieCallbacks(CurrentTasMovie); SetTasMovieCallbacks(CurrentTasMovie);
SetTextProperty(); SetTextProperty();
MainForm.RelinquishControl(this); MainForm.RelinquishControl(this);
_originalEndAction = Config.MovieEndAction; _originalEndAction = Config.Movies.MovieEndAction;
MainForm.ClearRewindData(); MainForm.ClearRewindData();
Config.MovieEndAction = MovieEndAction.Record; Config.Movies.MovieEndAction = MovieEndAction.Record;
MainForm.SetMainformMovieInfo(); MainForm.SetMainformMovieInfo();
MovieSession.ReadOnly = true; MovieSession.ReadOnly = true;
SetSplicer(); SetSplicer();
@ -794,7 +794,7 @@ namespace BizHawk.Client.EmuHawk
MainForm.PauseOnFrame = null; MainForm.PauseOnFrame = null;
MainForm.AddOnScreenMessage("TAStudio disengaged"); MainForm.AddOnScreenMessage("TAStudio disengaged");
MainForm.TakeBackControl(); MainForm.TakeBackControl();
Config.MovieEndAction = _originalEndAction; Config.Movies.MovieEndAction = _originalEndAction;
MainForm.SetMainformMovieInfo(); MainForm.SetMainformMovieInfo();
} }