Virtualpads - fix readonly notion, no longer crashy when no pads are set up

This commit is contained in:
adelikat 2014-06-27 01:45:30 +00:00
parent 20ab331404
commit f3cac5deff
2 changed files with 20 additions and 15 deletions

View File

@ -15,6 +15,7 @@ namespace BizHawk.Client.EmuHawk
public partial class VirtualPad : UserControl public partial class VirtualPad : UserControl
{ {
private PadSchema _schema; private PadSchema _schema;
private bool _readOnly = false;
private List<IVirtualPadControl> PadControls private List<IVirtualPadControl> PadControls
{ {
@ -30,7 +31,13 @@ namespace BizHawk.Client.EmuHawk
{ {
get get
{ {
return PadControls.First().ReadOnly; // Shortcut logic, assume all controls are in sync return _readOnly;
}
set
{
_readOnly = value;
PadControls.ForEach(c => c.ReadOnly = value);
} }
} }
@ -99,16 +106,6 @@ namespace BizHawk.Client.EmuHawk
PadControls.ForEach(p => p.Clear()); PadControls.ForEach(p => p.Clear());
} }
public void ToggleReadOnly()
{
PadControls.ForEach(p => p.ReadOnly ^= true);
}
public void SetReadOnly(bool readOnly)
{
PadControls.ForEach(p => p.ReadOnly = readOnly);
}
public void Set(IController controller) public void Set(IController controller)
{ {
PadControls.ForEach(c => c.Set(controller)); PadControls.ForEach(c => c.Set(controller));

View File

@ -13,6 +13,7 @@ namespace BizHawk.Client.EmuHawk
{ {
private int _defaultWidth; private int _defaultWidth;
private int _defaultHeight; private int _defaultHeight;
private bool _readOnly = false;
private List<VirtualPad> Pads private List<VirtualPad> Pads
{ {
@ -24,11 +25,18 @@ namespace BizHawk.Client.EmuHawk
} }
} }
private bool Readonly
public bool Readonly
{ {
get get
{ {
return Pads.First().ReadOnly; // Shortcut logic, assume all controls are in sync return _readOnly;
}
set
{
_readOnly = value;
Pads.ForEach(p => p.ReadOnly = value);
} }
} }
@ -129,12 +137,12 @@ namespace BizHawk.Client.EmuHawk
if (Global.MovieSession.Movie.IsPlaying && !Global.MovieSession.Movie.IsFinished && Global.Emulator.Frame > 0) if (Global.MovieSession.Movie.IsPlaying && !Global.MovieSession.Movie.IsFinished && Global.Emulator.Frame > 0)
{ {
Pads.ForEach(p => p.SetReadOnly(true)); Readonly = true;
Pads.ForEach(p => p.Set(Global.MovieSession.CurrentInput)); Pads.ForEach(p => p.Set(Global.MovieSession.CurrentInput));
} }
else else
{ {
Pads.ForEach(p => p.SetReadOnly(false)); Readonly = false;
} }
if (!Readonly && !Global.Config.VirtualPadSticky) if (!Readonly && !Global.Config.VirtualPadSticky)