N64 controller config - pass dependencies in

This commit is contained in:
adelikat 2019-12-15 16:20:08 -06:00
parent a58411efa0
commit 0b19090fc2
3 changed files with 22 additions and 41 deletions

View File

@ -2292,15 +2292,10 @@ namespace BizHawk.Client.EmuHawk
private void N64ControllerSettingsMenuItem_Click(object sender, EventArgs e) private void N64ControllerSettingsMenuItem_Click(object sender, EventArgs e)
{ {
using var form = new N64ControllersSetup(); if (Emulator is N64 n64)
if (form.ShowDialog() == DialogResult.OK)
{ {
FlagNeedsReboot(); using var form = new N64ControllersSetup(this, n64.GetSyncSettings().Clone());
GlobalWin.OSD.AddMessage("Controller settings saved but a core reboot is required"); form.ShowDialog();
}
else
{
GlobalWin.OSD.AddMessage("Controller settings aborted");
} }
} }

View File

@ -3,7 +3,6 @@ using System.Linq;
using System.Windows.Forms; using System.Windows.Forms;
using BizHawk.Common.ReflectionExtensions; using BizHawk.Common.ReflectionExtensions;
using BizHawk.Emulation.Cores.Nintendo.N64; using BizHawk.Emulation.Cores.Nintendo.N64;
namespace BizHawk.Client.EmuHawk namespace BizHawk.Client.EmuHawk
@ -21,11 +20,7 @@ namespace BizHawk.Client.EmuHawk
public int ControllerNumber public int ControllerNumber
{ {
get get => _controllerNumber;
{
return _controllerNumber;
}
set set
{ {
_controllerNumber = value; _controllerNumber = value;
@ -35,11 +30,7 @@ namespace BizHawk.Client.EmuHawk
public bool IsConnected public bool IsConnected
{ {
get get => EnabledCheckbox.Checked;
{
return EnabledCheckbox.Checked;
}
set set
{ {
EnabledCheckbox.Checked = value; EnabledCheckbox.Checked = value;

View File

@ -4,54 +4,49 @@ using System.Linq;
using System.Windows.Forms; using System.Windows.Forms;
using BizHawk.Emulation.Cores.Nintendo.N64; using BizHawk.Emulation.Cores.Nintendo.N64;
using BizHawk.Client.Common;
namespace BizHawk.Client.EmuHawk namespace BizHawk.Client.EmuHawk
{ {
public partial class N64ControllersSetup : Form public partial class N64ControllersSetup : Form
{ {
private List<N64ControllerSettingControl> ControllerSettingControls private readonly MainForm _mainForm;
{ private readonly N64SyncSettings _syncSettings;
get
{
return Controls
.OfType<N64ControllerSettingControl>()
.OrderBy(n => n.ControllerNumber)
.ToList();
}
}
public N64ControllersSetup() private List<N64ControllerSettingControl> ControllerSettingControls => Controls
.OfType<N64ControllerSettingControl>()
.OrderBy(n => n.ControllerNumber)
.ToList();
public N64ControllersSetup(
MainForm mainForm,
N64SyncSettings syncSettings)
{ {
_mainForm = mainForm;
_syncSettings = syncSettings;
InitializeComponent(); InitializeComponent();
} }
private void N64ControllersSetup_Load(object sender, EventArgs e) private void N64ControllersSetup_Load(object sender, EventArgs e)
{ {
var n64Settings = ((N64)Global.Emulator).GetSyncSettings();
ControllerSettingControls ControllerSettingControls
.ForEach(c => .ForEach(c =>
{ {
c.IsConnected = n64Settings.Controllers[c.ControllerNumber - 1].IsConnected; c.IsConnected = _syncSettings.Controllers[c.ControllerNumber - 1].IsConnected;
c.PakType = n64Settings.Controllers[c.ControllerNumber - 1].PakType; c.PakType = _syncSettings.Controllers[c.ControllerNumber - 1].PakType;
c.Refresh(); c.Refresh();
}); });
} }
private void OkBtn_Click(object sender, EventArgs e) private void OkBtn_Click(object sender, EventArgs e)
{ {
var n64 = (N64)Global.Emulator;
var n64Settings = n64.GetSyncSettings();
ControllerSettingControls ControllerSettingControls
.ForEach(c => .ForEach(c =>
{ {
n64Settings.Controllers[c.ControllerNumber - 1].IsConnected = c.IsConnected; _syncSettings.Controllers[c.ControllerNumber - 1].IsConnected = c.IsConnected;
n64Settings.Controllers[c.ControllerNumber - 1].PakType = c.PakType; _syncSettings.Controllers[c.ControllerNumber - 1].PakType = c.PakType;
}); });
n64.PutSyncSettings(n64Settings); _mainForm.PutCoreSyncSettings(_syncSettings);
DialogResult = DialogResult.OK; DialogResult = DialogResult.OK;
Close(); Close();