BizHawk/BizHawk.Client.EmuHawk/config/GB/DGBPrefs.cs

56 lines
1.5 KiB
C#

using System.Windows.Forms;
using BizHawk.Emulation.Cores.Nintendo.Gameboy;
using BizHawk.Client.Common;
namespace BizHawk.Client.EmuHawk
{
public partial class DGBPrefs : Form
{
private DGBPrefs()
{
InitializeComponent();
}
private void PutSettings(GambatteLink.GambatteLinkSettings s, GambatteLink.GambatteLinkSyncSettings ss)
{
gbPrefControl1.PutSettings(s.L, ss.L);
gbPrefControl2.PutSettings(s.R, ss.R);
}
private void GetSettings(out GambatteLink.GambatteLinkSettings s, out GambatteLink.GambatteLinkSyncSettings ss)
{
gbPrefControl1.GetSettings(out var sl, out var ssl);
gbPrefControl2.GetSettings(out var sr, out var ssr);
s = new GambatteLink.GambatteLinkSettings(sl, sr);
ss = new GambatteLink.GambatteLinkSyncSettings(ssl, ssr);
}
private bool SyncSettingsChanged => gbPrefControl1.SyncSettingsChanged || gbPrefControl2.SyncSettingsChanged;
public static void DoDGBPrefsDialog(MainForm mainForm, GambatteLink gambatte)
{
var s = gambatte.GetSettings();
var ss = gambatte.GetSyncSettings();
using var dlg = new DGBPrefs();
dlg.PutSettings(s, ss);
var emu = (GambatteLink)Global.Emulator;
dlg.gbPrefControl1.ColorGameBoy = emu.IsCGBMode(false);
dlg.gbPrefControl2.ColorGameBoy = emu.IsCGBMode(true);
if (dlg.ShowDialog(mainForm) == DialogResult.OK)
{
dlg.GetSettings(out s, out ss);
gambatte.PutSettings(s);
if (dlg.SyncSettingsChanged)
{
mainForm.PutCoreSyncSettings(ss);
}
}
}
}
}