diff --git a/BizHawk.Client.EmuHawk/tools/VirtualPads/controls/IVirtualPadControl.cs b/BizHawk.Client.EmuHawk/tools/VirtualPads/controls/IVirtualPadControl.cs
index 9b54acf50f..b003bf8285 100644
--- a/BizHawk.Client.EmuHawk/tools/VirtualPads/controls/IVirtualPadControl.cs
+++ b/BizHawk.Client.EmuHawk/tools/VirtualPads/controls/IVirtualPadControl.cs
@@ -4,7 +4,20 @@ namespace BizHawk.Client.EmuHawk
{
public interface IVirtualPadControl
{
+ ///
+ /// Clears the pad and resets it to a logical default
+ ///
void Clear();
+
+ ///
+ /// Sets the state of the control based on the given controller state
+ ///
+ /// The controller state that the control will be set to
void Set(IController controller);
+
+ ///
+ /// Gets or sets whether or not the user can change the state of the control
+ ///
+ bool ReadOnly { get; set; }
}
}
diff --git a/BizHawk.Client.EmuHawk/tools/VirtualPads/controls/VirtualPadAnalogButton.cs b/BizHawk.Client.EmuHawk/tools/VirtualPads/controls/VirtualPadAnalogButton.cs
index 1df5ec126f..11ebe9ae85 100644
--- a/BizHawk.Client.EmuHawk/tools/VirtualPads/controls/VirtualPadAnalogButton.cs
+++ b/BizHawk.Client.EmuHawk/tools/VirtualPads/controls/VirtualPadAnalogButton.cs
@@ -12,11 +12,37 @@ namespace BizHawk.Client.EmuHawk
private string _displayName = string.Empty;
private int _maxValue = 0;
private bool _programmaticallyChangingValue = false;
+
public VirtualPadAnalogButton()
{
InitializeComponent();
}
+ #region IVirtualPadControl Implementation
+
+ public void Clear()
+ {
+ // Nothing to do
+ }
+
+ public void Set(IController controller)
+ {
+ var newVal = (int)controller.GetFloat(Name);
+ var changed = AnalogTrackBar.Value != newVal;
+ if (changed)
+ {
+ CurrentValue = newVal;
+ }
+ }
+
+ public bool ReadOnly
+ {
+ get;
+ set; // TODO
+ }
+
+ #endregion
+
private void VirtualPadAnalogButton_Load(object sender, EventArgs e)
{
DisplayNameLabel.Text = DisplayName;
@@ -75,21 +101,6 @@ namespace BizHawk.Client.EmuHawk
}
}
- public void Clear()
- {
- // Nothing to do
- }
-
- public void Set(IController controller)
- {
- var newVal = (int)controller.GetFloat(Name);
- var changed = AnalogTrackBar.Value != newVal;
- if (changed)
- {
- CurrentValue = newVal;
- }
- }
-
private void AnalogTrackBar_ValueChanged(object sender, EventArgs e)
{
if (!_programmaticallyChangingValue)
diff --git a/BizHawk.Client.EmuHawk/tools/VirtualPads/controls/VirtualPadAnalogStick.cs b/BizHawk.Client.EmuHawk/tools/VirtualPads/controls/VirtualPadAnalogStick.cs
index 2cecd96f7e..9a500ed8c4 100644
--- a/BizHawk.Client.EmuHawk/tools/VirtualPads/controls/VirtualPadAnalogStick.cs
+++ b/BizHawk.Client.EmuHawk/tools/VirtualPads/controls/VirtualPadAnalogStick.cs
@@ -29,6 +29,8 @@ namespace BizHawk.Client.EmuHawk
MaxYNumeric.Value = 127; // Note: these trigger change events that change the analog stick too
}
+ #region IVirtualPadControl Implementation
+
public void Set(IController controller)
{
AnalogStick.Set(controller);
@@ -42,6 +44,14 @@ namespace BizHawk.Client.EmuHawk
ManualY.Value = 0;
}
+ public bool ReadOnly
+ {
+ get;
+ set; // TODO
+ }
+
+ #endregion
+
private void ManualX_ValueChanged(object sender, EventArgs e)
{
SetAnalogControlFromNumerics();
diff --git a/BizHawk.Client.EmuHawk/tools/VirtualPads/controls/VirtualPadButton.cs b/BizHawk.Client.EmuHawk/tools/VirtualPads/controls/VirtualPadButton.cs
index bb81f3d450..8db42d7c74 100644
--- a/BizHawk.Client.EmuHawk/tools/VirtualPads/controls/VirtualPadButton.cs
+++ b/BizHawk.Client.EmuHawk/tools/VirtualPads/controls/VirtualPadButton.cs
@@ -22,6 +22,35 @@ namespace BizHawk.Client.EmuHawk
ForeColor = SystemColors.ControlText;
}
+ #region IVirtualPadControl Implementation
+
+ public void Clear()
+ {
+ RightClicked = false;
+ Checked = false;
+ Global.AutofireStickyXORAdapter.SetSticky(Name, false);
+ Global.StickyXORAdapter.SetSticky(Name, false);
+ }
+
+ public void Set(IController controller)
+ {
+ var newVal = controller.IsPressed(Name);
+ var changed = newVal != Checked;
+
+ Checked = newVal;
+ if (changed)
+ {
+ Refresh();
+ }
+ }
+
+ public bool ReadOnly
+ {
+ get; set; // TODO
+ }
+
+ #endregion
+
protected override void WndProc(ref Message m)
{
switch (m.Msg)
@@ -116,25 +145,5 @@ namespace BizHawk.Client.EmuHawk
base.OnMouseClick(e);
}
-
- public void Clear()
- {
- RightClicked = false;
- Checked = false;
- Global.AutofireStickyXORAdapter.SetSticky(Name, false);
- Global.StickyXORAdapter.SetSticky(Name, false);
- }
-
- public void Set(IController controller)
- {
- var newVal = controller.IsPressed(Name);
- var changed = newVal != Checked;
-
- Checked = newVal;
- if (changed)
- {
- Refresh();
- }
- }
}
}
diff --git a/BizHawk.Client.EmuHawk/tools/VirtualPads/controls/VirtualPadTargetScreen.cs b/BizHawk.Client.EmuHawk/tools/VirtualPads/controls/VirtualPadTargetScreen.cs
index b3d5ad9a93..2e9bffc5b0 100644
--- a/BizHawk.Client.EmuHawk/tools/VirtualPads/controls/VirtualPadTargetScreen.cs
+++ b/BizHawk.Client.EmuHawk/tools/VirtualPads/controls/VirtualPadTargetScreen.cs
@@ -31,6 +31,26 @@ namespace BizHawk.Client.EmuHawk
YNumeric.Maximum = TargetPanel.Height;
}
+ #region IVirtualPadControl Implementation
+
+ public void Clear()
+ {
+ // Nothing to do
+ }
+
+ public void Set(IController controller)
+ {
+
+ }
+
+ public bool ReadOnly
+ {
+ get;
+ set; // TODO
+ }
+
+ #endregion
+
public string XName { get; set; }
public string YName { get; set; }
public string FireButton { get; set; } // Fire, Press, etc
@@ -95,16 +115,6 @@ namespace BizHawk.Client.EmuHawk
}
}
- public void Clear()
- {
- // Nothing to do
- }
-
- public void Set(IController controller)
- {
-
- }
-
private void UpdatePanelFromNumeric()
{
if (!_isProgrammicallyChangingNumerics)