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
{
private PadSchema _schema;
private bool _readOnly = false;
private List<IVirtualPadControl> PadControls
{
@ -30,7 +31,13 @@ namespace BizHawk.Client.EmuHawk
{
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());
}
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)
{
PadControls.ForEach(c => c.Set(controller));

View File

@ -13,6 +13,7 @@ namespace BizHawk.Client.EmuHawk
{
private int _defaultWidth;
private int _defaultHeight;
private bool _readOnly = false;
private List<VirtualPad> Pads
{
@ -24,11 +25,18 @@ namespace BizHawk.Client.EmuHawk
}
}
private bool Readonly
public bool Readonly
{
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)
{
Pads.ForEach(p => p.SetReadOnly(true));
Readonly = true;
Pads.ForEach(p => p.Set(Global.MovieSession.CurrentInput));
}
else
{
Pads.ForEach(p => p.SetReadOnly(false));
Readonly = false;
}
if (!Readonly && !Global.Config.VirtualPadSticky)