NesSyncSettingsForm - pass dependencies in and support SubNesHawk

This commit is contained in:
adelikat 2019-12-15 16:47:48 -06:00
parent e6ac894955
commit 8cc02b8956
3 changed files with 40 additions and 13 deletions

View File

@ -1523,7 +1523,8 @@ namespace BizHawk.Client.EmuHawk
Emulator is NES nes && nes.IsVS; Emulator is NES nes && nes.IsVS;
NESSoundChannelsMenuItem.Enabled = GlobalWin.Tools.IsAvailable<NESSoundConfig>(); NESSoundChannelsMenuItem.Enabled = GlobalWin.Tools.IsAvailable<NESSoundConfig>();
MovieSettingsMenuItem.Enabled = Emulator is NES && !Global.MovieSession.Movie.IsActive; MovieSettingsMenuItem.Enabled = (Emulator is NES || Emulator is SubNESHawk)
&& !Global.MovieSession.Movie.IsActive;
NesControllerSettingsMenuItem.Enabled = GlobalWin.Tools.IsAvailable<NesControllerSettings>() NesControllerSettingsMenuItem.Enabled = GlobalWin.Tools.IsAvailable<NesControllerSettings>()
&& !Global.MovieSession.Movie.IsActive; && !Global.MovieSession.Movie.IsActive;
@ -1671,9 +1672,18 @@ namespace BizHawk.Client.EmuHawk
private void MovieSettingsMenuItem_Click(object sender, EventArgs e) private void MovieSettingsMenuItem_Click(object sender, EventArgs e)
{ {
using var dlg = new NESSyncSettingsForm(); if (Emulator is NES nes)
{
using var dlg = new NESSyncSettingsForm(this, nes.GetSyncSettings().Clone(), nes.HasMapperProperties);
dlg.ShowDialog(this); dlg.ShowDialog(this);
} }
else if (Emulator is SubNESHawk sub)
{
using var dlg = new NESSyncSettingsForm(this, sub.GetSyncSettings().Clone(), sub.HasMapperProperties);
dlg.ShowDialog(this);
}
}
private void BarcodeReaderMenuItem_Click(object sender, EventArgs e) private void BarcodeReaderMenuItem_Click(object sender, EventArgs e)
{ {

View File

@ -3,24 +3,26 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Windows.Forms; using System.Windows.Forms;
using BizHawk.Client.Common;
using BizHawk.Emulation.Cores.Nintendo.NES; using BizHawk.Emulation.Cores.Nintendo.NES;
namespace BizHawk.Client.EmuHawk namespace BizHawk.Client.EmuHawk
{ {
public partial class NESSyncSettingsForm : Form public partial class NESSyncSettingsForm : Form
{ {
private readonly MainForm _mainForm;
private readonly DataTableDictionaryBind<string, string> _dataTableDictionary; private readonly DataTableDictionaryBind<string, string> _dataTableDictionary;
private readonly NES.NESSyncSettings _syncSettings; private readonly NES.NESSyncSettings _syncSettings;
public NESSyncSettingsForm() public NESSyncSettingsForm(
MainForm mainForm,
NES.NESSyncSettings syncSettings,
bool hasMapperProperties)
{ {
_mainForm = mainForm;
_syncSettings = syncSettings;
InitializeComponent(); InitializeComponent();
_syncSettings = ((NES)Global.Emulator).GetSyncSettings(); if (hasMapperProperties)
if (((NES)Global.Emulator).HasMapperProperties)
{ {
_dataTableDictionary = new DataTableDictionaryBind<string, string>(_syncSettings.BoardProperties); _dataTableDictionary = new DataTableDictionaryBind<string, string>(_syncSettings.BoardProperties);
dataGridView1.DataSource = _dataTableDictionary.Table; dataGridView1.DataSource = _dataTableDictionary.Table;
@ -84,7 +86,7 @@ namespace BizHawk.Client.EmuHawk
DialogResult = DialogResult.OK; DialogResult = DialogResult.OK;
if (changed) if (changed)
{ {
GlobalWin.MainForm.PutCoreSyncSettings(_syncSettings); _mainForm.PutCoreSyncSettings(_syncSettings);
} }
} }

View File

@ -1,5 +1,5 @@
using System; using System;
using System.Linq;
using BizHawk.Emulation.Common; using BizHawk.Emulation.Common;
using BizHawk.Emulation.Cores.Nintendo.NES; using BizHawk.Emulation.Cores.Nintendo.NES;
@ -69,9 +69,24 @@ namespace BizHawk.Emulation.Cores.Nintendo.SubNESHawk
public int _frame = 0; public int _frame = 0;
public bool IsFDS public bool IsFDS => subnes.Board is FDS;
public bool HasMapperProperties
{ {
get { return subnes.Board is FDS; } get
{
var fields = subnes.Board.GetType().GetFields();
foreach (var field in fields)
{
var attrib = field.GetCustomAttributes(typeof(MapperPropAttribute), false).OfType<MapperPropAttribute>().SingleOrDefault();
if (attrib != null)
{
return true;
}
}
return false;
}
} }
private readonly ITraceable _tracer; private readonly ITraceable _tracer;