From 9c601da2694fc8ac3503e446e2a9184bc95fef45 Mon Sep 17 00:00:00 2001 From: adelikat Date: Wed, 25 Jun 2014 17:26:07 +0000 Subject: [PATCH] Virtualpads - add a Readonly property to IVirtualPadControl, and some cleanup, readonly not wired up on any pad yet though --- .../controls/IVirtualPadControl.cs | 13 +++++ .../controls/VirtualPadAnalogButton.cs | 41 ++++++++++------ .../controls/VirtualPadAnalogStick.cs | 10 ++++ .../VirtualPads/controls/VirtualPadButton.cs | 49 +++++++++++-------- .../controls/VirtualPadTargetScreen.cs | 30 ++++++++---- 5 files changed, 98 insertions(+), 45 deletions(-) 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)