Virtualpads - fix readonly notion, no longer crashy when no pads are set up
This commit is contained in:
parent
20ab331404
commit
f3cac5deff
|
@ -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));
|
||||||
|
|
|
@ -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)
|
||||||
|
|
Loading…
Reference in New Issue