diff --git a/BizHawk.Client.EmuHawk/MainForm.Events.cs b/BizHawk.Client.EmuHawk/MainForm.Events.cs index 239f8798e5..ae677e3754 100644 --- a/BizHawk.Client.EmuHawk/MainForm.Events.cs +++ b/BizHawk.Client.EmuHawk/MainForm.Events.cs @@ -2323,23 +2323,7 @@ namespace BizHawk.Client.EmuHawk private void N64PluginSettingsMenuItem_Click(object sender, EventArgs e) { - // because mupen is a pile of garbage, this all needs to work even when N64 is not loaded - N64Settings settings; - N64SyncSettings syncSettings; - if (Global.Emulator is N64 n64) - { - settings = n64.GetSettings(); - syncSettings = n64.GetSyncSettings(); - } - else - { - settings = (N64Settings)Global.Config.GetCoreSettings() - ?? new N64Settings(); - syncSettings = (N64SyncSettings)Global.Config.GetCoreSyncSettings() - ?? new N64SyncSettings(); - } - - using var form = new N64VideoPluginConfig(settings, syncSettings); + using var form = new N64VideoPluginConfig(this, Global.Config, Emulator); if (form.ShowDialog() == DialogResult.OK) { if (Emulator.IsNull()) diff --git a/BizHawk.Client.EmuHawk/config/N64/N64VideoPluginconfig.cs b/BizHawk.Client.EmuHawk/config/N64/N64VideoPluginconfig.cs index 17af671ba8..8f5bdf6717 100644 --- a/BizHawk.Client.EmuHawk/config/N64/N64VideoPluginconfig.cs +++ b/BizHawk.Client.EmuHawk/config/N64/N64VideoPluginconfig.cs @@ -6,15 +6,20 @@ using BizHawk.Common.ReflectionExtensions; using BizHawk.Emulation.Cores.Nintendo.N64; using BizHawk.Client.Common; using BizHawk.Client.EmuHawk.WinFormExtensions; +using BizHawk.Emulation.Common; namespace BizHawk.Client.EmuHawk { public partial class N64VideoPluginConfig : Form { - private N64Settings _s; - private N64SyncSettings _ss; + private readonly MainForm _mainForm; + private readonly Config _config; + private readonly IEmulator _emulator; + private readonly N64Settings _s; + private readonly N64SyncSettings _ss; + + private const string CustomResItemName = "Custom"; - private static string _customResItemName = "Custom"; private static readonly string[] ValidResolutions = { "320 x 240", @@ -31,44 +36,37 @@ namespace BizHawk.Client.EmuHawk "1920 x 1440", "2048 x 1536", "2880 x 2160", - _customResItemName + CustomResItemName }; private bool _programmaticallyChangingPluginComboBox = false; public N64VideoPluginConfig( - N64Settings settings, - N64SyncSettings syncSettings) + MainForm mainForm, + Config config, + IEmulator emulator) { - _s = settings; - _ss = syncSettings; + _mainForm = mainForm; + _config = config; + _emulator = emulator; + + // because mupen is a pile of garbage, this all needs to work even when N64 is not loaded + if (_emulator is N64 n64) + { + _s = n64.GetSettings(); + _ss = n64.GetSyncSettings(); + } + else + { + _s = (N64Settings)_config.GetCoreSettings() + ?? new N64Settings(); + _ss = (N64SyncSettings)_config.GetCoreSyncSettings() + ?? new N64SyncSettings(); + } + InitializeComponent(); } - private static void PutSyncSettings(N64SyncSettings s) - { - if (Global.Emulator is N64) - { - GlobalWin.MainForm.PutCoreSyncSettings(s); - } - else - { - Global.Config.PutCoreSyncSettings(s); - } - } - - private static void PutSettings(N64Settings s) - { - if (Global.Emulator is N64) - { - GlobalWin.MainForm.PutCoreSettings(s); - } - else - { - Global.Config.PutCoreSettings(s); - } - } - private void CancelBtn_Click(object sender, EventArgs e) { // Add confirmation of cancelling change @@ -86,7 +84,7 @@ namespace BizHawk.Client.EmuHawk private void SaveSettings() { // Global - if (VideoResolutionComboBox.Text != _customResItemName) + if (VideoResolutionComboBox.Text != CustomResItemName) { var videoSettings = VideoResolutionComboBox.SelectedItem.ToString(); var strArr = videoSettings.Split('x'); @@ -483,8 +481,16 @@ namespace BizHawk.Client.EmuHawk .ToString() .GetEnumFromDescription(); - PutSettings(_s); - PutSyncSettings(_ss); + if (_emulator is N64) + { + _mainForm.PutCoreSettings(_s); + _mainForm.PutCoreSyncSettings(_ss); + } + else + { + _config.PutCoreSettings(_s); + _config.PutCoreSyncSettings(_ss); + } } private void N64VideoPluginConfig_Load(object sender, EventArgs e) @@ -521,7 +527,7 @@ namespace BizHawk.Client.EmuHawk else if (PluginComboBox.SelectedIndex != 4) // wtf { VideoResolutionComboBox.SelectedIndex = - VideoResolutionComboBox.Items.IndexOf(_customResItemName); + VideoResolutionComboBox.Items.IndexOf(CustomResItemName); ShowCustomVideoResolutionControls(); } @@ -1182,7 +1188,7 @@ namespace BizHawk.Client.EmuHawk int oldSizeX, oldSizeY; var oldResolution = VideoResolutionComboBox.SelectedItem?.ToString() ?? ""; - if (oldResolution != _customResItemName) + if (oldResolution != CustomResItemName) { strArr = oldResolution.Split('x'); oldSizeX = int.Parse(strArr[0].Trim()); @@ -1211,7 +1217,7 @@ namespace BizHawk.Client.EmuHawk int bestFit = -1; for (int i = 0; i < VideoResolutionComboBox.Items.Count; i++) { - if ((string)VideoResolutionComboBox.Items[i] != _customResItemName) + if ((string)VideoResolutionComboBox.Items[i] != CustomResItemName) { string option = (string)VideoResolutionComboBox.Items[i]; strArr = option.Split('x'); @@ -1244,7 +1250,7 @@ namespace BizHawk.Client.EmuHawk private void VideoResolutionComboBox_SelectedIndexChanged(object sender, EventArgs e) { - if (VideoResolutionComboBox.Text == _customResItemName) + if (VideoResolutionComboBox.Text == CustomResItemName) { ShowCustomVideoResolutionControls(); }