Move `SettingsAdapter` creation to `PutCore{S,SyncS}ettings` callsite
This commit is contained in:
parent
60cb9eeac9
commit
2cd6510784
src/BizHawk.Client.EmuHawk
IMainFormForConfig.csMainForm.Debug.csMainForm.Events.csMainForm.cs
config
|
@ -1,3 +1,5 @@
|
|||
using System;
|
||||
|
||||
using BizHawk.Client.Common;
|
||||
using BizHawk.Emulation.Common;
|
||||
|
||||
|
@ -8,8 +10,12 @@ namespace BizHawk.Client.EmuHawk
|
|||
/// <remarks>only referenced from <see cref="GenericCoreConfig"/></remarks>
|
||||
IEmulator Emulator { get; }
|
||||
|
||||
void PutCoreSettings(object o);
|
||||
/// <exception cref="InvalidOperationException">loaded emulator is not instance of <typeparamref name="T"/></exception>
|
||||
SettingsAdapter GetSettingsAdapterForLoadedCore<T>()
|
||||
where T : IEmulator;
|
||||
|
||||
void PutCoreSyncSettings(object o);
|
||||
void PutCoreSettings(object o, SettingsAdapter settable);
|
||||
|
||||
void PutCoreSyncSettings(object o, SettingsAdapter settable);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -152,7 +152,8 @@ namespace BizHawk.Client.EmuHawk
|
|||
var ss = ((N64) Emulator!).GetSyncSettings();
|
||||
var glidenSS = ss.GLideN64Plugin;
|
||||
foreach (var pi in props) pi.SetValue(obj: glidenSS, value: RandomElem(propDict[pi], rng));
|
||||
((MainForm) MainForm).PutCoreSyncSettings(ss);
|
||||
var mf = (MainForm) MainForm;
|
||||
mf.PutCoreSyncSettings(ss, mf.GetSettingsAdapterForLoadedCore<N64>());
|
||||
}
|
||||
SzButtonEx btnLightFuzz = new() { Size = new(200, 23), Text = "--> randomise some props" };
|
||||
btnLightFuzz.Click += (_, _) => Fuzz(limit: true);
|
||||
|
|
|
@ -1732,7 +1732,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
{
|
||||
var ss = coleco.GetSyncSettings();
|
||||
ss.SkipBiosIntro ^= true;
|
||||
PutCoreSyncSettings(ss);
|
||||
PutCoreSyncSettings(ss, GetSettingsAdapterForLoadedCore<ColecoVision>());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1742,7 +1742,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
{
|
||||
var ss = coleco.GetSyncSettings();
|
||||
ss.UseSGM ^= true;
|
||||
PutCoreSyncSettings(ss);
|
||||
PutCoreSyncSettings(ss, GetSettingsAdapterForLoadedCore<ColecoVision>());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -2411,9 +2411,8 @@ namespace BizHawk.Client.EmuHawk
|
|||
/// <summary>
|
||||
/// send core settings to emu, setting reboot flag if needed
|
||||
/// </summary>
|
||||
public void PutCoreSettings(object o)
|
||||
public void PutCoreSettings(object o, SettingsAdapter settable)
|
||||
{
|
||||
var settable = new SettingsAdapter(Emulator);
|
||||
if (!settable.HasSettings)
|
||||
return;
|
||||
var dirty = settable.PutSettings(o);
|
||||
|
@ -2427,9 +2426,8 @@ namespace BizHawk.Client.EmuHawk
|
|||
/// <summary>
|
||||
/// send core sync settings to emu, setting reboot flag if needed
|
||||
/// </summary>
|
||||
public void PutCoreSyncSettings(object o)
|
||||
public void PutCoreSyncSettings(object o, SettingsAdapter settable)
|
||||
{
|
||||
var settable = new SettingsAdapter(Emulator);
|
||||
if (MovieSession.Movie.IsActive())
|
||||
{
|
||||
AddOnScreenMessage("Attempt to change sync-relevant settings while recording BLOCKED.");
|
||||
|
@ -2444,6 +2442,16 @@ namespace BizHawk.Client.EmuHawk
|
|||
}
|
||||
}
|
||||
|
||||
public SettingsAdapter GetSettingsAdapterForLoadedCore<T>()
|
||||
where T : IEmulator
|
||||
{
|
||||
if (Emulator is not T) throw new InvalidOperationException();
|
||||
return GetSettingsAdapterForLoadedCoreUntyped();
|
||||
}
|
||||
|
||||
public SettingsAdapter GetSettingsAdapterForLoadedCoreUntyped()
|
||||
=> new(Emulator);
|
||||
|
||||
private void SaveConfig(string path = "")
|
||||
{
|
||||
if (Config.SaveWindowPosition)
|
||||
|
|
|
@ -42,7 +42,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
_syncSettings.Port1 = Port1ComboBox.SelectedItem.ToString();
|
||||
_syncSettings.Port2 = Port2ComboBox.SelectedItem.ToString();
|
||||
|
||||
_mainForm.PutCoreSyncSettings(_syncSettings);
|
||||
_mainForm.PutCoreSyncSettings(_syncSettings, _mainForm.GetSettingsAdapterForLoadedCore<A7800Hawk>());
|
||||
}
|
||||
|
||||
DialogResult = DialogResult.OK;
|
||||
|
|
|
@ -39,7 +39,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
if (changed)
|
||||
{
|
||||
_syncSettings.Filter = Port1ComboBox.SelectedItem.ToString();
|
||||
_mainForm.PutCoreSyncSettings(_syncSettings);
|
||||
_mainForm.PutCoreSyncSettings(_syncSettings, _mainForm.GetSettingsAdapterForLoadedCore<A7800Hawk>());
|
||||
}
|
||||
|
||||
DialogResult = DialogResult.OK;
|
||||
|
|
|
@ -51,7 +51,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
_settings.TapeVolume = tapeVolumetrackBar.Value;
|
||||
_settings.AYVolume = ayVolumetrackBar.Value;
|
||||
|
||||
_mainForm.PutCoreSettings(_settings);
|
||||
_mainForm.PutCoreSettings(_settings, _mainForm.GetSettingsAdapterForLoadedCore<AmstradCPC>());
|
||||
}
|
||||
DialogResult = DialogResult.OK;
|
||||
Close();
|
||||
|
|
|
@ -59,7 +59,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
_syncSettings.DeterministicEmulation = determEmucheckBox1.Checked;
|
||||
_syncSettings.AutoStartStopTape = autoLoadcheckBox1.Checked;
|
||||
|
||||
_mainForm.PutCoreSyncSettings(_syncSettings);
|
||||
_mainForm.PutCoreSyncSettings(_syncSettings, _mainForm.GetSettingsAdapterForLoadedCore<AmstradCPC>());
|
||||
|
||||
DialogResult = DialogResult.OK;
|
||||
Close();
|
||||
|
|
|
@ -40,7 +40,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
{
|
||||
_settings.OSDMessageVerbosity = (AmstradCPC.OSDVerbosity)Enum.Parse(typeof(AmstradCPC.OSDVerbosity), osdMessageVerbositycomboBox1.SelectedItem.ToString());
|
||||
|
||||
_mainForm.PutCoreSettings(_settings);
|
||||
_mainForm.PutCoreSettings(_settings, _mainForm.GetSettingsAdapterForLoadedCore<AmstradCPC>());
|
||||
|
||||
DialogResult = DialogResult.OK;
|
||||
Close();
|
||||
|
|
|
@ -42,7 +42,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
_syncSettings.Port1 = Port1ComboBox.SelectedItem.ToString();
|
||||
_syncSettings.Port2 = Port2ComboBox.SelectedItem.ToString();
|
||||
|
||||
_mainForm.PutCoreSyncSettings(_syncSettings);
|
||||
_mainForm.PutCoreSyncSettings(_syncSettings, _mainForm.GetSettingsAdapterForLoadedCore<ColecoVision>());
|
||||
}
|
||||
|
||||
DialogResult = DialogResult.OK;
|
||||
|
|
|
@ -68,7 +68,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
gambatte.PutSettings(s);
|
||||
if (dlg.SyncSettingsChanged)
|
||||
{
|
||||
mainForm.PutCoreSyncSettings(ss);
|
||||
mainForm.PutCoreSyncSettings(ss, mainForm.GetSettingsAdapterForLoadedCore<GambatteLink>());
|
||||
}
|
||||
}
|
||||
return result;
|
||||
|
|
|
@ -32,7 +32,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
gb.PutSettings(s);
|
||||
if (dlg.gbPrefControl1.SyncSettingsChanged)
|
||||
{
|
||||
mainForm.PutCoreSyncSettings(ss);
|
||||
mainForm.PutCoreSyncSettings(ss, mainForm.GetSettingsAdapterForLoadedCore<Gameboy>());
|
||||
}
|
||||
}
|
||||
return result;
|
||||
|
|
|
@ -316,7 +316,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
|
||||
_settings.SetCustomPalette(colors);
|
||||
|
||||
_mainForm.PutCoreSettings(_settings);
|
||||
_mainForm.PutCoreSettings(_settings, _mainForm.GetSettingsAdapterForLoadedCore<Sameboy>());
|
||||
|
||||
DialogResult = DialogResult.OK;
|
||||
Close();
|
||||
|
|
|
@ -8,6 +8,8 @@ namespace BizHawk.Client.EmuHawk
|
|||
{
|
||||
public partial class GenericCoreConfig : Form
|
||||
{
|
||||
private readonly SettingsAdapter _settable;
|
||||
|
||||
private readonly IMainFormForConfig _mainForm;
|
||||
private object _s;
|
||||
private object _ss;
|
||||
|
@ -23,17 +25,11 @@ namespace BizHawk.Client.EmuHawk
|
|||
InitializeComponent();
|
||||
_mainForm = mainForm;
|
||||
|
||||
var settable = new SettingsAdapter(_mainForm.Emulator);
|
||||
_settable = ((MainForm) _mainForm).GetSettingsAdapterForLoadedCoreUntyped(); //HACK
|
||||
|
||||
if (settable.HasSettings && !ignoreSettings)
|
||||
{
|
||||
_s = settable.GetSettings();
|
||||
}
|
||||
if (_settable.HasSettings && !ignoreSettings) _s = _settable.GetSettings();
|
||||
|
||||
if (settable.HasSyncSettings && !ignoreSyncSettings)
|
||||
{
|
||||
_ss = settable.GetSyncSettings();
|
||||
}
|
||||
if (_settable.HasSyncSettings && !ignoreSyncSettings) _ss = _settable.GetSyncSettings();
|
||||
|
||||
if (_s != null)
|
||||
{
|
||||
|
@ -65,12 +61,12 @@ namespace BizHawk.Client.EmuHawk
|
|||
{
|
||||
if (_s != null && _settingsChanged)
|
||||
{
|
||||
_mainForm.PutCoreSettings(_s);
|
||||
_mainForm.PutCoreSettings(_s, _settable);
|
||||
}
|
||||
|
||||
if (_ss != null && _syncSettingsChanged)
|
||||
{
|
||||
_mainForm.PutCoreSyncSettings(_ss);
|
||||
_mainForm.PutCoreSyncSettings(_ss, _settable);
|
||||
}
|
||||
|
||||
DialogResult = DialogResult.OK;
|
||||
|
|
|
@ -42,7 +42,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
_syncSettings.Port1 = Port1ComboBox.SelectedItem.ToString();
|
||||
_syncSettings.Port2 = Port2ComboBox.SelectedItem.ToString();
|
||||
|
||||
_mainForm.PutCoreSyncSettings(_syncSettings);
|
||||
_mainForm.PutCoreSyncSettings(_syncSettings, _mainForm.GetSettingsAdapterForLoadedCore<Intellivision>());
|
||||
}
|
||||
|
||||
DialogResult = DialogResult.OK;
|
||||
|
|
|
@ -52,7 +52,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
_syncSettings.Controllers[c.ControllerNumber - 1].PakType = c.PakType;
|
||||
});
|
||||
|
||||
_mainForm.PutCoreSyncSettings(_syncSettings);
|
||||
_mainForm.PutCoreSyncSettings(_syncSettings, _mainForm.GetSettingsAdapterForLoadedCore<N64>());
|
||||
|
||||
DialogResult = DialogResult.OK;
|
||||
Close();
|
||||
|
|
|
@ -123,8 +123,9 @@ namespace BizHawk.Client.EmuHawk
|
|||
|
||||
if (_emulator is N64)
|
||||
{
|
||||
_mainForm.PutCoreSettings(_s);
|
||||
_mainForm.PutCoreSyncSettings(_ss);
|
||||
var settable = _mainForm.GetSettingsAdapterForLoadedCore<N64>();
|
||||
_mainForm.PutCoreSettings(_s, settable);
|
||||
_mainForm.PutCoreSyncSettings(_ss, settable);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -149,7 +149,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
_settings.BackgroundColor &= 0x00FFFFFF;
|
||||
}
|
||||
|
||||
_mainForm.PutCoreSettings(_settings);
|
||||
_mainForm.PutCoreSettings(_settings, _mainForm.GetSettingsAdapterForLoadedCore<NES>());
|
||||
Close();
|
||||
}
|
||||
|
||||
|
|
|
@ -92,7 +92,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
DialogResult = DialogResult.OK;
|
||||
if (changed)
|
||||
{
|
||||
_mainForm.PutCoreSyncSettings(_syncSettings);
|
||||
_mainForm.PutCoreSyncSettings(_syncSettings, _mainForm.GetSettingsAdapterForLoadedCore<NES>());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -42,7 +42,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
_settings.VSDipswitches.Dip_Switch_7 = Dipswitch7CheckBox.Checked;
|
||||
_settings.VSDipswitches.Dip_Switch_8 = Dipswitch8CheckBox.Checked;
|
||||
|
||||
_mainForm.PutCoreSyncSettings(_settings);
|
||||
_mainForm.PutCoreSyncSettings(_settings, _mainForm.GetSettingsAdapterForLoadedCore<NES>());
|
||||
Close();
|
||||
}
|
||||
|
||||
|
|
|
@ -53,7 +53,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
|
||||
if (changed)
|
||||
{
|
||||
_mainForm.PutCoreSyncSettings(_syncSettings);
|
||||
_mainForm.PutCoreSyncSettings(_syncSettings, _mainForm.GetSettingsAdapterForLoadedCore<NES>());
|
||||
}
|
||||
|
||||
DialogResult = DialogResult.OK;
|
||||
|
|
|
@ -106,7 +106,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
|
||||
private void ButtonOk_Click(object sender, EventArgs e)
|
||||
{
|
||||
_mainForm.PutCoreSettings(_settings);
|
||||
_mainForm.PutCoreSettings(_settings, _mainForm.GetSettingsAdapterForLoadedCore<QuickNES>());
|
||||
DialogResult = DialogResult.OK;
|
||||
Close();
|
||||
}
|
||||
|
|
|
@ -141,7 +141,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
private void BtnOk_Click(object sender, EventArgs e)
|
||||
{
|
||||
_syncSettings.FIOConfig = UserConfigFromGui();
|
||||
_mainForm.PutCoreSyncSettings(_syncSettings);
|
||||
_mainForm.PutCoreSyncSettings(_syncSettings, _mainForm.GetSettingsAdapterForLoadedCore<Octoshock>());
|
||||
|
||||
DialogResult = DialogResult.OK;
|
||||
Close();
|
||||
|
|
|
@ -125,8 +125,9 @@ namespace BizHawk.Client.EmuHawk
|
|||
|
||||
SyncSettingsFromGui(_settings, _syncSettings);
|
||||
_settings.Validate();
|
||||
_mainForm.PutCoreSettings(_settings);
|
||||
_mainForm.PutCoreSyncSettings(_syncSettings);
|
||||
var settable = _mainForm.GetSettingsAdapterForLoadedCore<Octoshock>();
|
||||
_mainForm.PutCoreSettings(_settings, settable);
|
||||
_mainForm.PutCoreSyncSettings(_syncSettings, settable);
|
||||
|
||||
DialogResult = DialogResult.OK;
|
||||
Close();
|
||||
|
|
|
@ -257,7 +257,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
{
|
||||
if (_emulator is TEmulator)
|
||||
{
|
||||
_mainForm.PutCoreSyncSettings(o);
|
||||
_mainForm.PutCoreSyncSettings(o, _mainForm.GetSettingsAdapterForLoadedCore<TEmulator>());
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -41,7 +41,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
_syncSettings.RightPort = (BsnesApi.BSNES_INPUT_DEVICE) Port2ComboBox.SelectedIndex;
|
||||
_syncSettings.LimitAnalogChangeSensitivity = LimitAnalogChangeCheckBox.Checked;
|
||||
|
||||
_mainForm.PutCoreSyncSettings(_syncSettings);
|
||||
_mainForm.PutCoreSyncSettings(_syncSettings, _mainForm.GetSettingsAdapterForLoadedCore<BsnesCore>());
|
||||
}
|
||||
|
||||
DialogResult = DialogResult.OK;
|
||||
|
|
|
@ -65,8 +65,9 @@ namespace BizHawk.Client.EmuHawk
|
|||
s.ShowBG4_0 = dlg.ShowBg4_0;
|
||||
s.ShowBG4_1 = dlg.ShowBg4_1;
|
||||
|
||||
mainForm.PutCoreSettings(s);
|
||||
mainForm.PutCoreSyncSettings(ss);
|
||||
var settable = mainForm.GetSettingsAdapterForLoadedCore<BsnesCore>();
|
||||
mainForm.PutCoreSettings(s, settable);
|
||||
mainForm.PutCoreSyncSettings(ss, settable);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
|
|
@ -44,7 +44,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
_syncSettings.RightPort = (LibsnesControllerDeck.ControllerType)Enum.Parse(typeof(LibsnesControllerDeck.ControllerType), Port2ComboBox.SelectedItem.ToString());
|
||||
_syncSettings.LimitAnalogChangeSensitivity = LimitAnalogChangeCheckBox.Checked;
|
||||
|
||||
_mainForm.PutCoreSyncSettings(_syncSettings);
|
||||
_mainForm.PutCoreSyncSettings(_syncSettings, _mainForm.GetSettingsAdapterForLoadedCore<LibsnesCore>());
|
||||
}
|
||||
|
||||
DialogResult = DialogResult.OK;
|
||||
|
|
|
@ -48,8 +48,9 @@ namespace BizHawk.Client.EmuHawk
|
|||
s.ShowBG3_0 = s.ShowBG3_1 = dlg.ShowBg3;
|
||||
s.ShowBG4_0 = s.ShowBG4_1 = dlg.ShowBg4;
|
||||
|
||||
mainForm.PutCoreSettings(s);
|
||||
mainForm.PutCoreSyncSettings(ss);
|
||||
var settable = mainForm.GetSettingsAdapterForLoadedCore<LibsnesCore>();
|
||||
mainForm.PutCoreSettings(s, settable);
|
||||
mainForm.PutCoreSyncSettings(ss, settable);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
|
|
@ -32,7 +32,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
_settings.BGColor = (uint)BackgroundPanel.BackColor.ToArgb();
|
||||
_settings.ForeColor = (uint)ForeGroundPanel.BackColor.ToArgb();
|
||||
|
||||
_mainForm.PutCoreSettings(_settings);
|
||||
_mainForm.PutCoreSettings(_settings, _mainForm.GetSettingsAdapterForLoadedCore<TI83>());
|
||||
|
||||
DialogResult = DialogResult.OK;
|
||||
Close();
|
||||
|
|
|
@ -55,7 +55,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
_settings.EarVolume = earVolumetrackBar.Value;
|
||||
_settings.AYVolume = ayVolumetrackBar.Value;
|
||||
|
||||
_mainForm.PutCoreSettings(_settings);
|
||||
_mainForm.PutCoreSettings(_settings, _mainForm.GetSettingsAdapterForLoadedCore<ZXSpectrum>());
|
||||
}
|
||||
DialogResult = DialogResult.OK;
|
||||
Close();
|
||||
|
|
|
@ -61,7 +61,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
_syncSettings.DeterministicEmulation = determEmucheckBox1.Checked;
|
||||
_syncSettings.AutoLoadTape = autoLoadcheckBox1.Checked;
|
||||
|
||||
_mainForm.PutCoreSyncSettings(_syncSettings);
|
||||
_mainForm.PutCoreSyncSettings(_syncSettings, _mainForm.GetSettingsAdapterForLoadedCore<ZXSpectrum>());
|
||||
}
|
||||
DialogResult = DialogResult.OK;
|
||||
Close();
|
||||
|
|
|
@ -103,7 +103,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
_syncSettings.JoystickType2 = (JoystickType)Enum.Parse(typeof(JoystickType), Port2ComboBox.SelectedItem.ToString());
|
||||
_syncSettings.JoystickType3 = (JoystickType)Enum.Parse(typeof(JoystickType), Port3ComboBox.SelectedItem.ToString());
|
||||
|
||||
_mainForm.PutCoreSyncSettings(_syncSettings);
|
||||
_mainForm.PutCoreSyncSettings(_syncSettings, _mainForm.GetSettingsAdapterForLoadedCore<ZXSpectrum>());
|
||||
|
||||
DialogResult = DialogResult.OK;
|
||||
Close();
|
||||
|
|
|
@ -58,7 +58,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
_settings.BackgroundColor = _bgColor;
|
||||
_settings.UseCoreBorderForBackground = checkBoxShowCoreBrdColor.Checked;
|
||||
|
||||
_mainForm.PutCoreSettings(_settings);
|
||||
_mainForm.PutCoreSettings(_settings, _mainForm.GetSettingsAdapterForLoadedCore<ZXSpectrum>());
|
||||
|
||||
DialogResult = DialogResult.OK;
|
||||
Close();
|
||||
|
|
Loading…
Reference in New Issue