From 60cb9eeac94bb9f3a00cb680a966766b5583acfe Mon Sep 17 00:00:00 2001 From: YoshiRulz Date: Thu, 26 May 2022 17:35:33 +1000 Subject: [PATCH] Encapsulate creation of settings dialogs from `MainForm` --- src/BizHawk.Client.EmuHawk/MainForm.Events.cs | 445 ++++++++++++------ .../config/GB/GBLPrefs.cs | 6 +- .../config/GB/GBPrefs.cs | 6 +- .../config/GenericCoreConfig.cs | 12 +- .../config/SNES/BSNESOptions.cs | 3 +- .../config/SNES/SNESOptions.cs | 3 +- 6 files changed, 314 insertions(+), 161 deletions(-) diff --git a/src/BizHawk.Client.EmuHawk/MainForm.Events.cs b/src/BizHawk.Client.EmuHawk/MainForm.Events.cs index 958f4f2185..f66c665cea 100644 --- a/src/BizHawk.Client.EmuHawk/MainForm.Events.cs +++ b/src/BizHawk.Client.EmuHawk/MainForm.Events.cs @@ -14,6 +14,7 @@ using BizHawk.Client.EmuHawk.ToolExtensions; using BizHawk.Common; using BizHawk.Emulation.Common; using BizHawk.Emulation.Cores.Atari.A7800Hawk; +using BizHawk.Emulation.Cores.Calculators.Emu83; using BizHawk.Emulation.Cores.Calculators.TI83; using BizHawk.Emulation.Cores.ColecoVision; using BizHawk.Emulation.Cores.Computers.AmstradCPC; @@ -24,6 +25,7 @@ using BizHawk.Emulation.Cores.Consoles.Nintendo.QuickNES; using BizHawk.Emulation.Cores.Intellivision; using BizHawk.Emulation.Cores.Nintendo.BSNES; using BizHawk.Emulation.Cores.Nintendo.Gameboy; +using BizHawk.Emulation.Cores.Nintendo.GBHawk; using BizHawk.Emulation.Cores.Nintendo.N64; using BizHawk.Emulation.Cores.Nintendo.NES; using BizHawk.Emulation.Cores.Nintendo.Sameboy; @@ -1344,23 +1346,27 @@ namespace BizHawk.Client.EmuHawk Tools.Load(); } + private DialogResult OpenNesHawkGraphicsSettingsDialog(NES.NESSettings s) + { + using NESGraphicsConfig form = new(this, Config, s); + return this.ShowDialogWithTempMute(form); + } + + private DialogResult OpenQuickNesGraphicsSettingsDialog(QuickNES.QuickNESSettings s) + { + using QuickNesConfig form = new(this, Config, s); + return this.ShowDialogWithTempMute(form); + } + private void NesGraphicSettingsMenuItem_Click(object sender, EventArgs e) { - if (Emulator is NES nes) + _ = Emulator switch { - using var form = new NESGraphicsConfig(this, Config, nes.GetSettings().Clone()); - form.ShowDialog(this); - } - else if (Emulator is SubNESHawk sub) - { - using var form = new NESGraphicsConfig(this, Config, sub.GetSettings().Clone()); - form.ShowDialog(this); - } - else if (Emulator is QuickNES quickNes) - { - using var form = new QuickNesConfig(this, Config, quickNes.GetSettings().Clone()); - form.ShowDialog(this); - } + NES nesHawk => OpenNesHawkGraphicsSettingsDialog(nesHawk.GetSettings().Clone()), + SubNESHawk subNESHawk => OpenNesHawkGraphicsSettingsDialog(subNESHawk.GetSettings().Clone()), + QuickNES quickNes => OpenQuickNesGraphicsSettingsDialog(quickNes.GetSettings().Clone()), + _ => DialogResult.None + }; } private void NesSoundChannelsMenuItem_Click(object sender, EventArgs e) @@ -1368,18 +1374,20 @@ namespace BizHawk.Client.EmuHawk Tools.Load(); } + private DialogResult OpenNesHawkVSSettingsDialog(NES.NESSyncSettings ss) + { + using NesVsSettings form = new(this, ss); + return this.ShowDialogWithTempMute(form); + } + private void VsSettingsMenuItem_Click(object sender, EventArgs e) { - if (Emulator is NES nes && nes.IsVS) + _ = Emulator switch { - using var form = new NesVsSettings(this, nes.GetSyncSettings().Clone()); - this.ShowDialogWithTempMute(form); - } - else if (Emulator is SubNESHawk sub && sub.IsVs) - { - using var form = new NesVsSettings(this, sub.GetSyncSettings().Clone()); - this.ShowDialogWithTempMute(form); - } + NES { IsVS: true } nesHawk => OpenNesHawkVSSettingsDialog(nesHawk.GetSyncSettings().Clone()), + SubNESHawk { IsVs: true } subNESHawk => OpenNesHawkVSSettingsDialog(subNESHawk.GetSyncSettings().Clone()), + _ => DialogResult.None + }; } private void FdsEjectDiskMenuItem_Click(object sender, EventArgs e) @@ -1430,42 +1438,45 @@ namespace BizHawk.Client.EmuHawk } } + private DialogResult OpenNesHawkGamepadSettingsDialog(NES.NESSyncSettings ss) + { + using NesControllerSettings form = new(this, ss); + return this.ShowDialogWithTempMute(form); + } + + private DialogResult OpenQuickNesGamepadSettingsDialog() + => GenericCoreConfig.DoDialog( + this, + "QuickNES Controller Settings", + isMovieActive: MovieSession.Movie.IsActive(), + hideSettings: true, + hideSyncSettings: false); + private void NesControllerSettingsMenuItem_Click(object sender, EventArgs e) { - if (Emulator is NES nes) + _ = Emulator switch { - using var form = new NesControllerSettings(this, nes.GetSyncSettings().Clone()); - form.ShowDialog(); - } - else if (Emulator is SubNESHawk sub) - { - using var form = new NesControllerSettings(this, sub.GetSyncSettings().Clone()); - form.ShowDialog(); - } - else if (Emulator is QuickNES) - { - GenericCoreConfig.DoDialog( - this, - "QuickNES Controller Settings", - isMovieActive: MovieSession.Movie.IsActive(), - hideSettings: true, - hideSyncSettings: false); - } + NES nesHawk => OpenNesHawkGamepadSettingsDialog(nesHawk.GetSyncSettings().Clone()), + SubNESHawk subNESHawk => OpenNesHawkGamepadSettingsDialog(subNESHawk.GetSyncSettings().Clone()), + QuickNES => OpenQuickNesGamepadSettingsDialog(), + _ => DialogResult.None + }; + } + + private DialogResult OpenNesHawkAdvancedSettingsDialog(NES.NESSyncSettings ss, bool hasMapperProperties) + { + using NESSyncSettingsForm form = new(this, ss, hasMapperProperties: hasMapperProperties); + return this.ShowDialogWithTempMute(form); } private void MovieSettingsMenuItem_Click(object sender, EventArgs e) { - if (Emulator is NES nes) + _ = Emulator switch { - using var dlg = new NESSyncSettingsForm(this, nes.GetSyncSettings().Clone(), nes.HasMapperProperties); - dlg.ShowDialog(this); - } - else if (Emulator is SubNESHawk sub) - { - using var dlg = new NESSyncSettingsForm(this, sub.GetSyncSettings().Clone(), sub.HasMapperProperties); - dlg.ShowDialog(this); - } - + NES nesHawk => OpenNesHawkAdvancedSettingsDialog(nesHawk.GetSyncSettings().Clone(), nesHawk.HasMapperProperties), + SubNESHawk subNESHawk => OpenNesHawkAdvancedSettingsDialog(subNESHawk.GetSyncSettings().Clone(), subNESHawk.HasMapperProperties), + _ => DialogResult.None + }; } private void BarcodeReaderMenuItem_Click(object sender, EventArgs e) @@ -1509,13 +1520,21 @@ namespace BizHawk.Client.EmuHawk } } + private DialogResult OpenTI83PaletteSettingsDialog(TI83Common.TI83CommonSettings s) + { + using TI83PaletteConfig form = new(this, s); + return this.ShowDialogWithTempMute(form); + } + private void Ti83PaletteMenuItem_Click(object sender, EventArgs e) { - if (Emulator is TI83Common ti83) + var result = Emulator switch { - using var form = new TI83PaletteConfig(this, ti83.GetSettings().Clone()); - if (form.ShowDialog().IsOk()) AddOnScreenMessage("Palette settings saved"); - } + Emu83 emu83 => OpenTI83PaletteSettingsDialog(emu83.GetSettings().Clone()), + TI83 ti83Hawk => OpenTI83PaletteSettingsDialog(ti83Hawk.GetSettings().Clone()), + _ => DialogResult.None + }; + if (result.IsOk()) AddOnScreenMessage("Palette settings saved"); } private void A7800SubMenu_DropDownOpened(object sender, EventArgs e) @@ -1525,43 +1544,69 @@ namespace BizHawk.Client.EmuHawk = MovieSession.Movie.NotActive(); } + private DialogResult OpenA7800HawkGamepadSettingsDialog(A7800Hawk.A7800SyncSettings ss) + { + using A7800ControllerSettings form = new(this, ss); + return this.ShowDialogWithTempMute(form); + } + private void A7800ControllerSettingsMenuItem_Click(object sender, EventArgs e) { - if (Emulator is A7800Hawk atari7800Hawk) + _ = Emulator switch { - using var form = new A7800ControllerSettings(this, atari7800Hawk.GetSyncSettings().Clone()); - form.ShowDialog(); - } + A7800Hawk a7800Hawk => OpenA7800HawkGamepadSettingsDialog(a7800Hawk.GetSyncSettings().Clone()), + _ => DialogResult.None + }; + } + + private DialogResult OpenA7800HawkFilterSettingsDialog(A7800Hawk.A7800SyncSettings ss) + { + using A7800FilterSettings form = new(this, ss); + return this.ShowDialogWithTempMute(form); } private void A7800FilterSettingsMenuItem_Click(object sender, EventArgs e) { - if (Emulator is A7800Hawk atari7800Hawk) + _ = Emulator switch { - using var form = new A7800FilterSettings(this, atari7800Hawk.GetSyncSettings().Clone()); - form.ShowDialog(); - } + A7800Hawk a7800Hawk => OpenA7800HawkFilterSettingsDialog(a7800Hawk.GetSyncSettings().Clone()), + _ => DialogResult.None + }; } + private DialogResult OpenGambatteSettingsDialog(Gameboy gambatte) + => GBPrefs.DoGBPrefsDialog(this, Config, Game, MovieSession, gambatte); + + private DialogResult OpenGBHawkSettingsDialog() + => OpenGenericCoreConfig("Gameboy Settings"); + + private DialogResult OpenSameBoySettingsDialog() + => OpenGenericCoreConfig("Gameboy Settings"); + private void GbCoreSettingsMenuItem_Click(object sender, EventArgs e) { - if (Emulator is Gameboy gb) + _ = Emulator switch { - GBPrefs.DoGBPrefsDialog(this, Config, Game, MovieSession, gb); - } - else - { - OpenGenericCoreConfig("Gameboy Settings"); - } + Gameboy gambatte => OpenGambatteSettingsDialog(gambatte), + GBHawk => OpenGBHawkSettingsDialog(), + Sameboy => OpenSameBoySettingsDialog(), + _ => DialogResult.None + }; + } + + private DialogResult OpenSameBoyPaletteSettingsDialog(Sameboy.SameboySettings s) + { + using SameBoyColorChooserForm form = new(this, Game, Config, s); + return this.ShowDialogWithTempMute(form); } private void SameboyColorChooserMenuItem_Click(object sender, EventArgs e) { - if (Emulator is Sameboy sameboy) + _ = Emulator switch { - using var form = new SameBoyColorChooserForm(this, Game, Config, sameboy.GetSettings().Clone()); - if (form.ShowDialog().IsOk()) AddOnScreenMessage("Palette settings saved"); - } + Sameboy sameBoy => OpenSameBoyPaletteSettingsDialog(sameBoy.GetSettings().Clone()), + _ => DialogResult.None + }; } private void GbGpuViewerMenuItem_Click(object sender, EventArgs e) @@ -1579,24 +1624,32 @@ namespace BizHawk.Client.EmuHawk PSXControllerSettingsMenuItem.Enabled = MovieSession.Movie.NotActive(); } + private DialogResult OpenOctoshockGamepadSettingsDialog(Octoshock.SyncSettings ss) + { + using PSXControllerConfig form = new(this, ss); + return this.ShowDialogWithTempMute(form); + } + private void PsxControllerSettingsMenuItem_Click(object sender, EventArgs e) { - if (Emulator is Octoshock psx) + _ = Emulator switch { - using var form = new PSXControllerConfig(this, psx.GetSyncSettings().Clone()); - form.ShowDialog(); - } + Octoshock octoshock => OpenOctoshockGamepadSettingsDialog(octoshock.GetSyncSettings().Clone()), + _ => DialogResult.None + }; } + private DialogResult OpenOctoshockSettingsDialog(Octoshock octoshock) + => PSXOptions.DoSettingsDialog(this, Config, octoshock); + private void PsxOptionsMenuItem_Click(object sender, EventArgs e) { - if (Emulator is Octoshock psx) + var result = Emulator switch { - if (PSXOptions.DoSettingsDialog(this, Config, psx).IsOk()) - { - FrameBufferResized(); - } - } + Octoshock octoshock => OpenOctoshockSettingsDialog(octoshock), + _ => DialogResult.None + }; + if (result.IsOk()) FrameBufferResized(); } private void PsxDiscControlsMenuItem_Click(object sender, EventArgs e) @@ -1619,18 +1672,26 @@ namespace BizHawk.Client.EmuHawk SnesGfxDebuggerMenuItem.Enabled = true; } + private DialogResult OpenOldBSNESGamepadSettingsDialog(LibsnesCore.SnesSyncSettings ss) + { + using SNESControllerSettings form = new(this, ss); + return this.ShowDialogWithTempMute(form); + } + + private DialogResult OpenBSNESGamepadSettingsDialog(BsnesCore.SnesSyncSettings ss) + { + using BSNESControllerSettings form = new(this, ss); + return this.ShowDialogWithTempMute(form); + } + private void SNESControllerConfigurationMenuItem_Click(object sender, EventArgs e) { - if (Emulator is LibsnesCore bsnes) + _ = Emulator switch { - using var form = new SNESControllerSettings(this, bsnes.GetSyncSettings().Clone()); - form.ShowDialog(); - } - else if (Emulator is BsnesCore bsnesCore) - { - using var form = new BSNESControllerSettings(this, bsnesCore.GetSyncSettings().Clone()); - form.ShowDialog(); - } + LibsnesCore oldBSNES => OpenOldBSNESGamepadSettingsDialog(oldBSNES.GetSyncSettings().Clone()), + BsnesCore bsnes => OpenBSNESGamepadSettingsDialog(bsnes.GetSyncSettings().Clone()), + _ => DialogResult.None + }; } private void SnesGfxDebuggerMenuItem_Click(object sender, EventArgs e) @@ -1638,16 +1699,20 @@ namespace BizHawk.Client.EmuHawk Tools.Load(); } + private DialogResult OpenOldBSNESSettingsDialog(LibsnesCore bsnes) + => SNESOptions.DoSettingsDialog(this, bsnes); + + private DialogResult OpenBSNESSettingsDialog(BsnesCore bsnes) + => BSNESOptions.DoSettingsDialog(this, bsnes); + private void SnesOptionsMenuItem_Click(object sender, EventArgs e) { - if (Emulator is LibsnesCore libsnes) + _ = Emulator switch { - SNESOptions.DoSettingsDialog(this, libsnes); - } - if (Emulator is BsnesCore bsnes) - { - BSNESOptions.DoSettingsDialog(this, bsnes); - } + LibsnesCore oldBSNES => OpenOldBSNESSettingsDialog(oldBSNES), + BsnesCore bsnes => OpenBSNESSettingsDialog(bsnes), + _ => DialogResult.None + }; } private void ColecoSubMenu_DropDownOpened(object sender, EventArgs e) @@ -1681,13 +1746,19 @@ namespace BizHawk.Client.EmuHawk } } + private DialogResult OpenColecoHawkGamepadSettingsDialog(ColecoVision.ColecoSyncSettings ss) + { + using ColecoControllerSettings form = new(this, ss); + return this.ShowDialogWithTempMute(form); + } + private void ColecoControllerSettingsMenuItem_Click(object sender, EventArgs e) { - if (Emulator is ColecoVision coleco) + _ = Emulator switch { - using var form = new ColecoControllerSettings(this, coleco.GetSyncSettings().Clone()); - form.ShowDialog(); - } + ColecoVision colecoHawk => OpenColecoHawkGamepadSettingsDialog(colecoHawk.GetSyncSettings().Clone()), + _ => DialogResult.None + }; } private void N64SubMenu_DropDownOpened(object sender, EventArgs e) @@ -1706,23 +1777,34 @@ namespace BizHawk.Client.EmuHawk N64ExpansionSlotMenuItem.Enabled = !((N64)Emulator).IsOverridingUserExpansionSlotSetting; } + private DialogResult OpenMupen64PlusGraphicsSettingsDialog() + { + using N64VideoPluginConfig form = new(this, Config, Emulator); + return this.ShowDialogWithTempMute(form); + } + private void N64PluginSettingsMenuItem_Click(object sender, EventArgs e) { - using var form = new N64VideoPluginConfig(this, Config, Emulator); - if (form.ShowDialog().IsOk() + if (OpenMupen64PlusGraphicsSettingsDialog().IsOk() && Emulator is not N64) // If it's loaded, the reboot required message will appear { AddOnScreenMessage("Plugin settings saved"); } } + private DialogResult OpenMupen64PlusGamepadSettingsDialog(N64SyncSettings ss) + { + using N64ControllersSetup form = new(this, ss); + return this.ShowDialogWithTempMute(form); + } + private void N64ControllerSettingsMenuItem_Click(object sender, EventArgs e) { - if (Emulator is N64 n64) + _ = Emulator switch { - using var form = new N64ControllersSetup(this, n64.GetSyncSettings().Clone()); - form.ShowDialog(); - } + N64 mupen64Plus => OpenMupen64PlusGamepadSettingsDialog(mupen64Plus.GetSyncSettings().Clone()), + _ => DialogResult.None + }; } private void N64CircularAnalogRangeMenuItem_Click(object sender, EventArgs e) @@ -1749,15 +1831,19 @@ namespace BizHawk.Client.EmuHawk } } + private DialogResult OpenGambatteLinkSettingsDialog(GambatteLink gambatteLink) + => GBLPrefs.DoGBLPrefsDialog(this, Config, Game, MovieSession, gambatteLink); + private void GblSettingsMenuItem_Click(object sender, EventArgs e) { - if (Emulator is GambatteLink gambatte) + _ = Emulator switch { - GBLPrefs.DoGBLPrefsDialog(this, Config, Game, MovieSession, gambatte); - } + GambatteLink gambatteLink => OpenGambatteLinkSettingsDialog(gambatteLink), + _ => DialogResult.None + }; } - private void OpenGenericCoreConfig(string title) + private DialogResult OpenGenericCoreConfig(string title) => GenericCoreConfig.DoDialog(this, title, isMovieActive: MovieSession.Movie.IsActive()); private void GenericCoreSettingsMenuItem_Click(object sender, EventArgs e) @@ -1766,9 +1852,16 @@ namespace BizHawk.Client.EmuHawk OpenGenericCoreConfig($"{coreName} Settings"); } + private DialogResult OpenVirtuSettingsDialog() + => OpenGenericCoreConfig("Apple II Settings"); + private void AppleIISettingsMenuItem_Click(object sender, EventArgs e) { - OpenGenericCoreConfig("Apple II Settings"); + _ = Emulator switch + { + AppleII => OpenVirtuSettingsDialog(), + _ => DialogResult.None + }; } private void AppleSubMenu_DropDownOpened(object sender, EventArgs e) @@ -1839,9 +1932,16 @@ namespace BizHawk.Client.EmuHawk } } + private DialogResult OpenC64HawkSettingsDialog() + => OpenGenericCoreConfig("C64 Settings"); + private void C64SettingsMenuItem_Click(object sender, EventArgs e) { - OpenGenericCoreConfig("C64 Settings"); + _ = Emulator switch + { + C64 => OpenC64HawkSettingsDialog(), + _ => DialogResult.None + }; } private void IntVSubMenu_DropDownOpened(object sender, EventArgs e) @@ -1849,49 +1949,79 @@ namespace BizHawk.Client.EmuHawk IntVControllerSettingsMenuItem.Enabled = MovieSession.Movie.NotActive(); } + private DialogResult OpenIntelliHawkGamepadSettingsDialog(Intellivision.IntvSyncSettings ss) + { + using IntvControllerSettings form = new(this, ss); + return this.ShowDialogWithTempMute(form); + } + private void IntVControllerSettingsMenuItem_Click(object sender, EventArgs e) { - if (Emulator is Intellivision intv) + _ = Emulator switch { - using var form = new IntvControllerSettings(this, intv.GetSyncSettings().Clone()); - form.ShowDialog(); - } + Intellivision intelliHawk => OpenIntelliHawkGamepadSettingsDialog(intelliHawk.GetSyncSettings().Clone()), + _ => DialogResult.None + }; + } + + private DialogResult OpenZXHawkGamepadSettingsDialog(ZXSpectrum.ZXSpectrumSyncSettings ss) + { + using ZxSpectrumJoystickSettings form = new(this, ss); + return this.ShowDialogWithTempMute(form); } private void ZXSpectrumControllerConfigurationMenuItem_Click(object sender, EventArgs e) { - if (Emulator is ZXSpectrum zxs) + _ = Emulator switch { - using var form = new ZxSpectrumJoystickSettings(this, zxs.GetSyncSettings().Clone()); - form.ShowDialog(); - } + ZXSpectrum zxHawk => OpenZXHawkGamepadSettingsDialog(zxHawk.GetSyncSettings().Clone()), + _ => DialogResult.None + }; + } + + private DialogResult OpenZXHawkSyncSettingsDialog(ZXSpectrum.ZXSpectrumSyncSettings ss) + { + using ZxSpectrumCoreEmulationSettings form = new(this, ss); + return this.ShowDialogWithTempMute(form); } private void ZXSpectrumCoreEmulationSettingsMenuItem_Click(object sender, EventArgs e) { - if (Emulator is ZXSpectrum speccy) + _ = Emulator switch { - using var form = new ZxSpectrumCoreEmulationSettings(this, speccy.GetSyncSettings().Clone()); - form.ShowDialog(); - } + ZXSpectrum zxHawk => OpenZXHawkSyncSettingsDialog(zxHawk.GetSyncSettings().Clone()), + _ => DialogResult.None + }; + } + + private DialogResult OpenZXHawkSettingsDialog(ZXSpectrum.ZXSpectrumSettings s) + { + using ZxSpectrumNonSyncSettings form = new(this, s); + return this.ShowDialogWithTempMute(form); } private void ZXSpectrumNonSyncSettingsMenuItem_Click(object sender, EventArgs e) { - if (Emulator is ZXSpectrum speccy) + _ = Emulator switch { - using var form = new ZxSpectrumNonSyncSettings(this, speccy.GetSettings().Clone()); - form.ShowDialog(); - } + ZXSpectrum zxHawk => OpenZXHawkSettingsDialog(zxHawk.GetSettings().Clone()), + _ => DialogResult.None + }; + } + + private DialogResult OpenZXHawkAudioSettingsDialog(ZXSpectrum.ZXSpectrumSettings s) + { + using ZxSpectrumAudioSettings form = new(this, s); + return this.ShowDialogWithTempMute(form); } private void ZXSpectrumAudioSettingsMenuItem_Click(object sender, EventArgs e) { - if (Emulator is ZXSpectrum speccy) + _ = Emulator switch { - using var form = new ZxSpectrumAudioSettings(this, speccy.GetSettings().Clone()); - form.ShowDialog(); - } + ZXSpectrum zxHawk => OpenZXHawkAudioSettingsDialog(zxHawk.GetSettings().Clone()), + _ => DialogResult.None + }; } private void ZXSpectrumMediaMenuItem_DropDownOpened(object sender, EventArgs e) @@ -1996,22 +2126,34 @@ namespace BizHawk.Client.EmuHawk } } + private DialogResult OpenCPCHawkSyncSettingsDialog(AmstradCPC.AmstradCPCSyncSettings ss) + { + using AmstradCpcCoreEmulationSettings form = new(this, ss); + return this.ShowDialogWithTempMute(form); + } + private void AmstradCpcCoreEmulationSettingsMenuItem_Click(object sender, EventArgs e) { - if (Emulator is AmstradCPC cpc) + _ = Emulator switch { - using var form = new AmstradCpcCoreEmulationSettings(this, cpc.GetSyncSettings().Clone()); - form.ShowDialog(); - } + AmstradCPC cpcHawk => OpenCPCHawkSyncSettingsDialog(cpcHawk.GetSyncSettings().Clone()), + _ => DialogResult.None + }; + } + + private DialogResult OpenCPCHawkAudioSettingsDialog(AmstradCPC.AmstradCPCSettings s) + { + using AmstradCpcAudioSettings form = new(this, s); + return this.ShowDialogWithTempMute(form); } private void AmstradCpcAudioSettingsMenuItem_Click(object sender, EventArgs e) { - if (Emulator is AmstradCPC cpc) + _ = Emulator switch { - using var form = new AmstradCpcAudioSettings(this, cpc.GetSettings().Clone()); - form.ShowDialog(); - } + AmstradCPC cpcHawk => OpenCPCHawkAudioSettingsDialog(cpcHawk.GetSettings().Clone()), + _ => DialogResult.None + }; } private void AmstradCpcMediaMenuItem_DropDownOpened(object sender, EventArgs e) @@ -2091,14 +2233,19 @@ namespace BizHawk.Client.EmuHawk AmstradCPCDisksSubMenu.DropDownItems.AddRange(items.ToArray()); } + private DialogResult OpenCPCHawkSettingsDialog(AmstradCPC.AmstradCPCSettings s) + { + using AmstradCpcNonSyncSettings form = new(this, s); + return this.ShowDialogWithTempMute(form); + } + private void AmstradCpcNonSyncSettingsMenuItem_Click(object sender, EventArgs e) { - if (Emulator is AmstradCPC cpc) + _ = Emulator switch { - using var form = new AmstradCpcNonSyncSettings(this, cpc.GetSettings().Clone()); - form.ShowDialog(); - } - + AmstradCPC cpcHawk => OpenCPCHawkSettingsDialog(cpcHawk.GetSettings().Clone()), + _ => DialogResult.None + }; } private void HelpSubMenu_DropDownOpened(object sender, EventArgs e) diff --git a/src/BizHawk.Client.EmuHawk/config/GB/GBLPrefs.cs b/src/BizHawk.Client.EmuHawk/config/GB/GBLPrefs.cs index 557baea642..47287e85d0 100644 --- a/src/BizHawk.Client.EmuHawk/config/GB/GBLPrefs.cs +++ b/src/BizHawk.Client.EmuHawk/config/GB/GBLPrefs.cs @@ -48,7 +48,7 @@ namespace BizHawk.Client.EmuHawk private bool SyncSettingsChanged => gbPrefControl1.SyncSettingsChanged || gbPrefControl2.SyncSettingsChanged || gbPrefControl3.SyncSettingsChanged || gbPrefControl4.SyncSettingsChanged; - public static void DoGBLPrefsDialog(IMainFormForConfig mainForm, Config config, IGameInfo game, IMovieSession movieSession, GambatteLink gambatte) + public static DialogResult DoGBLPrefsDialog(IMainFormForConfig mainForm, Config config, IGameInfo game, IMovieSession movieSession, GambatteLink gambatte) { var s = gambatte.GetSettings(); var ss = gambatte.GetSyncSettings(); @@ -61,7 +61,8 @@ namespace BizHawk.Client.EmuHawk dlg.gbPrefControl3.ColorGameBoy = gambatte.IsCGBMode(2); dlg.gbPrefControl4.ColorGameBoy = gambatte.IsCGBMode(3); - if (mainForm.ShowDialogAsChild(dlg) == DialogResult.OK) + var result = mainForm.ShowDialogAsChild(dlg); + if (result == DialogResult.OK) { dlg.GetSettings(out s, out ss); gambatte.PutSettings(s); @@ -70,6 +71,7 @@ namespace BizHawk.Client.EmuHawk mainForm.PutCoreSyncSettings(ss); } } + return result; } } } diff --git a/src/BizHawk.Client.EmuHawk/config/GB/GBPrefs.cs b/src/BizHawk.Client.EmuHawk/config/GB/GBPrefs.cs index 5c459e5dc2..5d67d442f3 100644 --- a/src/BizHawk.Client.EmuHawk/config/GB/GBPrefs.cs +++ b/src/BizHawk.Client.EmuHawk/config/GB/GBPrefs.cs @@ -17,7 +17,7 @@ namespace BizHawk.Client.EmuHawk Icon = Properties.Resources.GambatteIcon; } - public static void DoGBPrefsDialog(IMainFormForConfig mainForm, Config config, IGameInfo game, IMovieSession movieSession, Gameboy gb) + public static DialogResult DoGBPrefsDialog(IMainFormForConfig mainForm, Config config, IGameInfo game, IMovieSession movieSession, Gameboy gb) { var s = gb.GetSettings(); var ss = gb.GetSyncSettings(); @@ -25,7 +25,8 @@ namespace BizHawk.Client.EmuHawk using var dlg = new GBPrefs(mainForm.DialogController); dlg.gbPrefControl1.PutSettings(config, game, movieSession, s, ss); dlg.gbPrefControl1.ColorGameBoy = gb.IsCGBMode() || gb.IsSgb; - if (mainForm.ShowDialogAsChild(dlg).IsOk()) + var result = mainForm.ShowDialogAsChild(dlg); + if (result.IsOk()) { dlg.gbPrefControl1.GetSettings(out s, out ss); gb.PutSettings(s); @@ -34,6 +35,7 @@ namespace BizHawk.Client.EmuHawk mainForm.PutCoreSyncSettings(ss); } } + return result; } } } diff --git a/src/BizHawk.Client.EmuHawk/config/GenericCoreConfig.cs b/src/BizHawk.Client.EmuHawk/config/GenericCoreConfig.cs index 8a13c0872c..a38c37f690 100644 --- a/src/BizHawk.Client.EmuHawk/config/GenericCoreConfig.cs +++ b/src/BizHawk.Client.EmuHawk/config/GenericCoreConfig.cs @@ -77,7 +77,7 @@ namespace BizHawk.Client.EmuHawk Close(); } - public static void DoDialog(IMainFormForConfig owner, string title, bool isMovieActive) + public static DialogResult DoDialog(IMainFormForConfig owner, string title, bool isMovieActive) { if (owner.Emulator is Emulation.Cores.Waterbox.NymaCore core) { @@ -87,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", isMovieActive, !core.SettingsInfo.HasSettings, !core.SettingsInfo.HasSyncSettings); + return DoDialog(owner, "Nyma Core", isMovieActive, !core.SettingsInfo.HasSettings, !core.SettingsInfo.HasSyncSettings); } finally { @@ -101,7 +101,7 @@ namespace BizHawk.Client.EmuHawk try { TypeDescriptor.AddProvider(desc, typeof(Emulation.Cores.Arcades.MAME.MAME.MAMESyncSettings)); - DoDialog(owner, "MAME", isMovieActive, true, false); + return DoDialog(owner, "MAME", isMovieActive, true, false); } finally { @@ -110,11 +110,11 @@ namespace BizHawk.Client.EmuHawk } else { - DoDialog(owner, title, isMovieActive, false, false); + return DoDialog(owner, title, isMovieActive, false, false); } } - public static void DoDialog( + public static DialogResult DoDialog( IMainFormForConfig owner, string title, bool isMovieActive, @@ -129,7 +129,7 @@ namespace BizHawk.Client.EmuHawk { Text = title, }; - owner.ShowDialogAsChild(dlg); + return owner.ShowDialogAsChild(dlg); } private void PropertyGrid2_PropertyValueChanged(object s, PropertyValueChangedEventArgs e) diff --git a/src/BizHawk.Client.EmuHawk/config/SNES/BSNESOptions.cs b/src/BizHawk.Client.EmuHawk/config/SNES/BSNESOptions.cs index b39a735875..e6d8bcae72 100644 --- a/src/BizHawk.Client.EmuHawk/config/SNES/BSNESOptions.cs +++ b/src/BizHawk.Client.EmuHawk/config/SNES/BSNESOptions.cs @@ -11,7 +11,7 @@ namespace BizHawk.Client.EmuHawk InitializeComponent(); } - public static void DoSettingsDialog(IMainFormForConfig mainForm, BsnesCore bsnes) + public static DialogResult DoSettingsDialog(IMainFormForConfig mainForm, BsnesCore bsnes) { var s = bsnes.GetSettings(); var ss = bsnes.GetSyncSettings(); @@ -68,6 +68,7 @@ namespace BizHawk.Client.EmuHawk mainForm.PutCoreSettings(s); mainForm.PutCoreSyncSettings(ss); } + return result; } private bool AlwaysDoubleSize diff --git a/src/BizHawk.Client.EmuHawk/config/SNES/SNESOptions.cs b/src/BizHawk.Client.EmuHawk/config/SNES/SNESOptions.cs index dfb370d937..14548dd535 100644 --- a/src/BizHawk.Client.EmuHawk/config/SNES/SNESOptions.cs +++ b/src/BizHawk.Client.EmuHawk/config/SNES/SNESOptions.cs @@ -14,7 +14,7 @@ namespace BizHawk.Client.EmuHawk private bool _suppressDoubleSize; private bool _userDoubleSizeOption; - public static void DoSettingsDialog(IMainFormForConfig mainForm, LibsnesCore bsnes) + public static DialogResult DoSettingsDialog(IMainFormForConfig mainForm, LibsnesCore bsnes) { var s = bsnes.GetSettings(); var ss = bsnes.GetSyncSettings(); @@ -51,6 +51,7 @@ namespace BizHawk.Client.EmuHawk mainForm.PutCoreSettings(s); mainForm.PutCoreSyncSettings(ss); } + return result; } private bool AlwaysDoubleSize