diff --git a/src/BizHawk.Client.EmuHawk/IMainFormForConfig.cs b/src/BizHawk.Client.EmuHawk/IMainFormForConfig.cs
index ef8ce6d643..e4a41ee3ed 100644
--- a/src/BizHawk.Client.EmuHawk/IMainFormForConfig.cs
+++ b/src/BizHawk.Client.EmuHawk/IMainFormForConfig.cs
@@ -8,8 +8,6 @@ namespace BizHawk.Client.EmuHawk
/// only referenced from
IEmulator Emulator { get; }
- IMovieSession MovieSession { get; }
-
void PutCoreSettings(object o);
void PutCoreSyncSettings(object o);
diff --git a/src/BizHawk.Client.EmuHawk/MainForm.Events.cs b/src/BizHawk.Client.EmuHawk/MainForm.Events.cs
index 5ed5fbef0a..c5b04160f2 100644
--- a/src/BizHawk.Client.EmuHawk/MainForm.Events.cs
+++ b/src/BizHawk.Client.EmuHawk/MainForm.Events.cs
@@ -888,7 +888,7 @@ namespace BizHawk.Client.EmuHawk
private void PathsMenuItem_Click(object sender, EventArgs e)
{
- using var form = new PathConfig(this, Config.PathEntries, Game.System);
+ using var form = new PathConfig(Config.PathEntries, Game.System, newPath => MovieSession.BackupDirectory = newPath);
if (form.ShowDialog().IsOk()) AddOnScreenMessage("Path settings saved");
}
@@ -1439,7 +1439,12 @@ namespace BizHawk.Client.EmuHawk
}
else if (Emulator is QuickNES)
{
- GenericCoreConfig.DoDialog(this, "QuickNES Controller Settings", true, false);
+ GenericCoreConfig.DoDialog(
+ this,
+ "QuickNES Controller Settings",
+ isMovieActive: MovieSession.Movie.IsActive(),
+ hideSettings: true,
+ hideSyncSettings: false);
}
}
@@ -1551,7 +1556,7 @@ namespace BizHawk.Client.EmuHawk
}
else
{
- GenericCoreConfig.DoDialog(this, "Gameboy Settings");
+ OpenGenericCoreConfig("Gameboy Settings");
}
}
@@ -1748,15 +1753,18 @@ namespace BizHawk.Client.EmuHawk
}
}
+ private void OpenGenericCoreConfig(string title)
+ => GenericCoreConfig.DoDialog(this, title, isMovieActive: MovieSession.Movie.IsActive());
+
private void GenericCoreSettingsMenuItem_Click(object sender, EventArgs e)
{
var coreName = ((CoreAttribute) Attribute.GetCustomAttribute(Emulator.GetType(), typeof(CoreAttribute))).CoreName;
- GenericCoreConfig.DoDialog(this, $"{coreName} Settings");
+ OpenGenericCoreConfig($"{coreName} Settings");
}
private void AppleIISettingsMenuItem_Click(object sender, EventArgs e)
{
- GenericCoreConfig.DoDialog(this, "Apple II Settings");
+ OpenGenericCoreConfig("Apple II Settings");
}
private void AppleSubMenu_DropDownOpened(object sender, EventArgs e)
@@ -1829,7 +1837,7 @@ namespace BizHawk.Client.EmuHawk
private void C64SettingsMenuItem_Click(object sender, EventArgs e)
{
- GenericCoreConfig.DoDialog(this, "C64 Settings");
+ OpenGenericCoreConfig("C64 Settings");
}
private void IntVSubMenu_DropDownOpened(object sender, EventArgs e)
diff --git a/src/BizHawk.Client.EmuHawk/config/GenericCoreConfig.cs b/src/BizHawk.Client.EmuHawk/config/GenericCoreConfig.cs
index e412cdd932..8a13c0872c 100644
--- a/src/BizHawk.Client.EmuHawk/config/GenericCoreConfig.cs
+++ b/src/BizHawk.Client.EmuHawk/config/GenericCoreConfig.cs
@@ -1,8 +1,7 @@
using System;
-using System.Windows.Forms;
-using System.Reflection;
using System.ComponentModel;
-using BizHawk.Client.Common;
+using System.Windows.Forms;
+
using BizHawk.Emulation.Common;
namespace BizHawk.Client.EmuHawk
@@ -15,7 +14,11 @@ namespace BizHawk.Client.EmuHawk
private bool _syncSettingsChanged;
private bool _settingsChanged;
- private GenericCoreConfig(IMainFormForConfig mainForm, bool ignoreSettings = false, bool ignoreSyncSettings = false)
+ private GenericCoreConfig(
+ IMainFormForConfig mainForm,
+ bool isMovieActive,
+ bool ignoreSettings = false,
+ bool ignoreSyncSettings = false)
{
InitializeComponent();
_mainForm = mainForm;
@@ -52,7 +55,7 @@ namespace BizHawk.Client.EmuHawk
tabControl1.TabPages.Remove(tabPage2);
}
- if (_mainForm.MovieSession.Movie.IsActive())
+ if (isMovieActive)
{
propertyGrid2.Enabled = false; // disable changes to sync setting when movie, so as not to confuse user
}
@@ -74,7 +77,7 @@ namespace BizHawk.Client.EmuHawk
Close();
}
- public static void DoDialog(IMainFormForConfig owner, string title)
+ public static void DoDialog(IMainFormForConfig owner, string title, bool isMovieActive)
{
if (owner.Emulator is Emulation.Cores.Waterbox.NymaCore core)
{
@@ -84,7 +87,7 @@ namespace BizHawk.Client.EmuHawk
// OH GOD THE HACKS WHY
TypeDescriptor.AddProvider(desc, typeof(Emulation.Cores.Waterbox.NymaCore.NymaSettings));
TypeDescriptor.AddProvider(desc, typeof(Emulation.Cores.Waterbox.NymaCore.NymaSyncSettings));
- DoDialog(owner, "Nyma Core", !core.SettingsInfo.HasSettings, !core.SettingsInfo.HasSyncSettings);
+ DoDialog(owner, "Nyma Core", isMovieActive, !core.SettingsInfo.HasSettings, !core.SettingsInfo.HasSyncSettings);
}
finally
{
@@ -98,7 +101,7 @@ namespace BizHawk.Client.EmuHawk
try
{
TypeDescriptor.AddProvider(desc, typeof(Emulation.Cores.Arcades.MAME.MAME.MAMESyncSettings));
- DoDialog(owner, "MAME", true, false);
+ DoDialog(owner, "MAME", isMovieActive, true, false);
}
finally
{
@@ -107,16 +110,28 @@ namespace BizHawk.Client.EmuHawk
}
else
{
- using var dlg = new GenericCoreConfig(owner) { Text = title };
- owner.ShowDialogAsChild(dlg);
+ DoDialog(owner, title, isMovieActive, false, false);
}
}
- public static void DoDialog(IMainFormForConfig owner, string title, bool hideSettings, bool hideSyncSettings)
+ public static void DoDialog(
+ IMainFormForConfig owner,
+ string title,
+ bool isMovieActive,
+ bool hideSettings,
+ bool hideSyncSettings)
{
- using var dlg = new GenericCoreConfig(owner, hideSettings, hideSyncSettings) { Text = title };
+ using var dlg = new GenericCoreConfig(
+ owner,
+ isMovieActive: isMovieActive,
+ ignoreSettings: hideSettings,
+ ignoreSyncSettings: hideSyncSettings)
+ {
+ Text = title,
+ };
owner.ShowDialogAsChild(dlg);
}
+
private void PropertyGrid2_PropertyValueChanged(object s, PropertyValueChangedEventArgs e)
{
_syncSettingsChanged = true;
diff --git a/src/BizHawk.Client.EmuHawk/config/PathConfig.cs b/src/BizHawk.Client.EmuHawk/config/PathConfig.cs
index 6895ff776b..3799c91352 100644
--- a/src/BizHawk.Client.EmuHawk/config/PathConfig.cs
+++ b/src/BizHawk.Client.EmuHawk/config/PathConfig.cs
@@ -13,10 +13,10 @@ namespace BizHawk.Client.EmuHawk
{
public partial class PathConfig : Form
{
- private readonly IMainFormForConfig _mainForm;
-
private readonly PathEntryCollection _pathEntries;
+ private readonly Action _setMovieBackupPath;
+
private readonly string _sysID;
private static AutoCompleteStringCollection AutoCompleteOptions => new AutoCompleteStringCollection
@@ -26,10 +26,13 @@ namespace BizHawk.Client.EmuHawk
"%rom%",
};
- public PathConfig(IMainFormForConfig mainForm, PathEntryCollection pathEntries, string sysID)
+ public PathConfig(
+ PathEntryCollection pathEntries,
+ string sysID,
+ Action setMovieBackupPath)
{
- _mainForm = mainForm;
_pathEntries = pathEntries;
+ _setMovieBackupPath = setMovieBackupPath;
_sysID = sysID;
InitializeComponent();
SpecialCommandsBtn.Image = Properties.Resources.Help;
@@ -219,7 +222,7 @@ namespace BizHawk.Client.EmuHawk
pathEntry.Path = t.Text;
}
- _mainForm.MovieSession.BackupDirectory = _pathEntries.MovieBackupsAbsolutePath();
+ _setMovieBackupPath(_pathEntries.MovieBackupsAbsolutePath());
}
private void DoRomToggle()