SNES config dialogs - pass in dependencies

This commit is contained in:
adelikat 2019-12-16 17:53:54 -06:00
parent 4a509fa410
commit 4a332c1fb0
4 changed files with 41 additions and 36 deletions

View File

@ -2216,8 +2216,11 @@ namespace BizHawk.Client.EmuHawk
private void SNESControllerConfigurationMenuItem_Click(object sender, EventArgs e)
{
using var form = new SNESControllerSettings();
form.ShowDialog();
if (Emulator is LibsnesCore bsnes)
{
using var form = new SNESControllerSettings(this, bsnes.GetSyncSettings().Clone());
form.ShowDialog();
}
}
private void SnesGfxDebuggerMenuItem_Click(object sender, EventArgs e)
@ -2238,7 +2241,10 @@ namespace BizHawk.Client.EmuHawk
private void SnesOptionsMenuItem_Click(object sender, EventArgs e)
{
SNESOptions.DoSettingsDialog(this);
if (Emulator is LibsnesCore bsnes)
{
SNESOptions.DoSettingsDialog(this, bsnes);
}
}
private void Snes9xSettingsMenuItem_Click(object sender, EventArgs e)

View File

@ -9,24 +9,27 @@ namespace BizHawk.Client.EmuHawk
{
public partial class SNESControllerSettings : Form
{
private LibsnesCore.SnesSyncSettings _syncSettings;
private bool _supressDropdownChangeEvents;
private readonly MainForm _mainForm;
private readonly LibsnesCore.SnesSyncSettings _syncSettings;
private bool _suppressDropdownChangeEvents;
public SNESControllerSettings()
public SNESControllerSettings(
MainForm mainForm,
LibsnesCore.SnesSyncSettings syncSettings)
{
_mainForm = mainForm;
_syncSettings = syncSettings;
InitializeComponent();
}
private void SNESControllerSettings_Load(object sender, EventArgs e)
{
_syncSettings = ((LibsnesCore)Global.Emulator).GetSyncSettings().Clone();
LimitAnalogChangeCheckBox.Checked = _syncSettings.LimitAnalogChangeSensitivity;
_supressDropdownChangeEvents = true;
_suppressDropdownChangeEvents = true;
Port1ComboBox.PopulateFromEnum<LibsnesControllerDeck.ControllerType>(_syncSettings.LeftPort);
Port2ComboBox.PopulateFromEnum<LibsnesControllerDeck.ControllerType>(_syncSettings.RightPort);
_supressDropdownChangeEvents = false;
_suppressDropdownChangeEvents = false;
}
private void OkBtn_Click(object sender, EventArgs e)
@ -42,7 +45,7 @@ namespace BizHawk.Client.EmuHawk
_syncSettings.RightPort = (LibsnesControllerDeck.ControllerType)Enum.Parse(typeof(LibsnesControllerDeck.ControllerType), Port2ComboBox.SelectedItem.ToString());
_syncSettings.LimitAnalogChangeSensitivity = LimitAnalogChangeCheckBox.Checked;
GlobalWin.MainForm.PutCoreSyncSettings(_syncSettings);
_mainForm.PutCoreSyncSettings(_syncSettings);
}
DialogResult = DialogResult.OK;
@ -51,14 +54,14 @@ namespace BizHawk.Client.EmuHawk
private void CancelBtn_Click(object sender, EventArgs e)
{
GlobalWin.OSD.AddMessage("Controller settings aborted");
_mainForm.AddOnScreenMessage("Controller settings aborted");
DialogResult = DialogResult.Cancel;
Close();
}
private void PortComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
if (!_supressDropdownChangeEvents)
if (!_suppressDropdownChangeEvents)
{
var leftPort = (LibsnesControllerDeck.ControllerType)Enum.Parse(typeof(LibsnesControllerDeck.ControllerType), Port1ComboBox.SelectedItem.ToString());
var rightPort = (LibsnesControllerDeck.ControllerType)Enum.Parse(typeof(LibsnesControllerDeck.ControllerType), Port2ComboBox.SelectedItem.ToString());

View File

@ -1,7 +1,6 @@
using System;
using System.Windows.Forms;
using BizHawk.Emulation.Cores.Nintendo.SNES;
using BizHawk.Client.Common;
namespace BizHawk.Client.EmuHawk
{
@ -15,10 +14,10 @@ namespace BizHawk.Client.EmuHawk
private bool _suppressDoubleSize;
private bool _userDoubleSizeOption;
public static void DoSettingsDialog(IWin32Window owner)
public static void DoSettingsDialog(MainForm mainForm, LibsnesCore bsnes)
{
var s = ((LibsnesCore)Global.Emulator).GetSettings();
var ss = ((LibsnesCore)Global.Emulator).GetSyncSettings();
var s = bsnes.GetSettings();
var ss = bsnes.GetSyncSettings();
using var dlg = new SNESOptions
{
AlwaysDoubleSize = s.AlwaysDoubleSize,
@ -33,7 +32,7 @@ namespace BizHawk.Client.EmuHawk
ShowBg4 = s.ShowBG4_0
};
var result = dlg.ShowDialog(owner);
var result = dlg.ShowDialog(mainForm);
if (result == DialogResult.OK)
{
s.AlwaysDoubleSize = dlg.AlwaysDoubleSize;
@ -47,18 +46,14 @@ namespace BizHawk.Client.EmuHawk
s.ShowBG3_0 = s.ShowBG3_1 = dlg.ShowBg3;
s.ShowBG4_0 = s.ShowBG4_1 = dlg.ShowBg4;
GlobalWin.MainForm.PutCoreSettings(s);
GlobalWin.MainForm.PutCoreSyncSettings(ss);
mainForm.PutCoreSettings(s);
mainForm.PutCoreSyncSettings(ss);
}
}
private bool AlwaysDoubleSize
{
get
{
return _userDoubleSizeOption;
}
get => _userDoubleSizeOption;
set
{
_userDoubleSizeOption = value;
@ -68,19 +63,20 @@ namespace BizHawk.Client.EmuHawk
private bool CropSGBFrame
{
get { return cbCropSGBFrame.Checked; }
set { cbCropSGBFrame.Checked = value; }
get => cbCropSGBFrame.Checked;
set => cbCropSGBFrame.Checked = value;
}
private bool ShowObj1 { get { return Obj1Checkbox.Checked; } set { Obj1Checkbox.Checked = value; } }
private bool ShowObj2 { get { return Obj2Checkbox.Checked; } set { Obj2Checkbox.Checked = value; } }
private bool ShowObj3 { get { return Obj3Checkbox.Checked; } set { Obj3Checkbox.Checked = value; } }
private bool ShowObj4 { get { return Obj4Checkbox.Checked; } set { Obj4Checkbox.Checked = value; } }
private bool ShowObj1 { get => Obj1Checkbox.Checked; set => Obj1Checkbox.Checked = value;
}
private bool ShowObj2 { get => Obj2Checkbox.Checked; set => Obj2Checkbox.Checked = value; }
private bool ShowObj3 { get => Obj3Checkbox.Checked; set => Obj3Checkbox.Checked = value; }
private bool ShowObj4 { get => Obj4Checkbox.Checked; set => Obj4Checkbox.Checked = value; }
private bool ShowBg1 { get { return Bg1Checkbox.Checked; } set { Bg1Checkbox.Checked = value; } }
private bool ShowBg2 { get { return Bg2Checkbox.Checked; } set { Bg2Checkbox.Checked = value; } }
private bool ShowBg3 { get { return Bg3Checkbox.Checked; } set { Bg3Checkbox.Checked = value; } }
private bool ShowBg4 { get { return Bg4Checkbox.Checked; } set { Bg4Checkbox.Checked = value; } }
private bool ShowBg1 { get => Bg1Checkbox.Checked; set => Bg1Checkbox.Checked = value; }
private bool ShowBg2 { get => Bg2Checkbox.Checked; set => Bg2Checkbox.Checked = value; }
private bool ShowBg3 { get => Bg3Checkbox.Checked; set => Bg3Checkbox.Checked = value; }
private bool ShowBg4 { get => Bg4Checkbox.Checked; set => Bg4Checkbox.Checked = value; }
private void RefreshDoubleSizeOption()
{
@ -110,6 +106,5 @@ namespace BizHawk.Client.EmuHawk
DialogResult = DialogResult.Cancel;
Close();
}
}
}

View File

@ -253,6 +253,7 @@
<s:Boolean x:Key="/Default/UserDictionary/Words/=Intelli/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=INTV/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Joypad/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Justifier/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=keepalives/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Libretro/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Lightgun/@EntryIndexedValue">True</s:Boolean>