BizHawk/BizHawk.Client.EmuHawk/config/NES/NesControllerSettings.cs

77 lines
2.2 KiB
C#

using System;
using System.Linq;
using System.Windows.Forms;
using BizHawk.Client.Common;
using BizHawk.Emulation.Cores.Nintendo.NES;
using BizHawk.Emulation.Cores.Nintendo.SubNESHawk;
namespace BizHawk.Client.EmuHawk
{
public partial class NesControllerSettings : Form
{
private readonly NES.NESSyncSettings _syncSettings;
public NesControllerSettings()
{
InitializeComponent();
if (Global.Emulator is NES)
{
_syncSettings = ((NES)Global.Emulator).GetSyncSettings();
}
else
{
_syncSettings = ((SubNESHawk)Global.Emulator).GetSyncSettings();
}
// TODO: use combobox extension and add descriptions to enum values
comboBoxFamicom.Items.AddRange(NESControlSettings.GetFamicomExpansionValues().ToArray());
comboBoxNESL.Items.AddRange(NESControlSettings.GetNesPortValues().ToArray());
comboBoxNESR.Items.AddRange(NESControlSettings.GetNesPortValues().ToArray());
comboBoxFamicom.SelectedItem = _syncSettings.Controls.FamicomExpPort;
comboBoxNESL.SelectedItem = _syncSettings.Controls.NesLeftPort;
comboBoxNESR.SelectedItem = _syncSettings.Controls.NesRightPort;
checkBoxFamicom.Checked = _syncSettings.Controls.Famicom;
}
private void CheckBoxFamicom_CheckedChanged(object sender, EventArgs e)
{
comboBoxFamicom.Enabled = checkBoxFamicom.Checked;
comboBoxNESL.Enabled = !checkBoxFamicom.Checked;
comboBoxNESR.Enabled = !checkBoxFamicom.Checked;
}
private void OkBtn_Click(object sender, EventArgs e)
{
var ctrls = new NESControlSettings
{
Famicom = checkBoxFamicom.Checked,
FamicomExpPort = (string)comboBoxFamicom.SelectedItem,
NesLeftPort = (string)comboBoxNESL.SelectedItem,
NesRightPort = (string)comboBoxNESR.SelectedItem
};
bool changed = NESControlSettings.NeedsReboot(ctrls, _syncSettings.Controls);
_syncSettings.Controls = ctrls;
if (changed)
{
GlobalWin.MainForm.PutCoreSyncSettings(_syncSettings);
}
DialogResult = DialogResult.OK;
Close();
}
private void CancelBtn_Click(object sender, EventArgs e)
{
GlobalWin.OSD.AddMessage("Controller settings aborted");
DialogResult = DialogResult.Cancel;
Close();
}
}
}