diff --git a/BizHawk.Client.EmuHawk/BizHawk.Client.EmuHawk.csproj b/BizHawk.Client.EmuHawk/BizHawk.Client.EmuHawk.csproj
index 6b9cd7473d..31f3bc98f7 100644
--- a/BizHawk.Client.EmuHawk/BizHawk.Client.EmuHawk.csproj
+++ b/BizHawk.Client.EmuHawk/BizHawk.Client.EmuHawk.csproj
@@ -882,16 +882,19 @@
Component
-
-
- UserControl
-
-
- VirtualPadControl.cs
+
+
+ Component
+
+ UserControl
+
+
+ VirtualPad.cs
+
Form
@@ -1215,8 +1218,8 @@
TI83KeyPad.cs
-
- VirtualPadControl.cs
+
+ VirtualPad.cs
VirtualpadTool.cs
diff --git a/BizHawk.Client.EmuHawk/tools/VirtualPads/VirtualPad.Designer.cs b/BizHawk.Client.EmuHawk/tools/VirtualPads/VirtualPad.Designer.cs
index c7c278a09a..a41364cd92 100644
--- a/BizHawk.Client.EmuHawk/tools/VirtualPads/VirtualPad.Designer.cs
+++ b/BizHawk.Client.EmuHawk/tools/VirtualPads/VirtualPad.Designer.cs
@@ -1,6 +1,6 @@
namespace BizHawk.Client.EmuHawk
{
- partial class VirtualPadControl
+ partial class VirtualPad
{
///
/// Required designer variable.
diff --git a/BizHawk.Client.EmuHawk/tools/VirtualPads/VirtualPad.cs b/BizHawk.Client.EmuHawk/tools/VirtualPads/VirtualPad.cs
index 0279dc043f..20174cf9dc 100644
--- a/BizHawk.Client.EmuHawk/tools/VirtualPads/VirtualPad.cs
+++ b/BizHawk.Client.EmuHawk/tools/VirtualPads/VirtualPad.cs
@@ -12,11 +12,11 @@ using BizHawk.Client.Common;
namespace BizHawk.Client.EmuHawk
{
- public partial class VirtualPadControl : UserControl, IVirtualPad
+ public partial class VirtualPad : UserControl, IVirtualPad
{
private PadSchema _schema;
- public VirtualPadControl(PadSchema schema)
+ public VirtualPad(PadSchema schema)
{
SetStyle(ControlStyles.AllPaintingInWmPaint, true);
SetStyle(ControlStyles.UserPaint, true);
@@ -56,11 +56,10 @@ namespace BizHawk.Client.EmuHawk
public void Clear()
{
Controls
- .OfType()
+ .OfType()
.ToList()
.ForEach(c => {
- c.Checked = false;
- Global.StickyXORAdapter.SetSticky(c.Name, false);
+ c.Clear();
});
}
diff --git a/BizHawk.Client.EmuHawk/tools/VirtualPads/VirtualpadTool.Designer.cs b/BizHawk.Client.EmuHawk/tools/VirtualPads/VirtualpadTool.Designer.cs
index 88b7123369..2678022ad6 100644
--- a/BizHawk.Client.EmuHawk/tools/VirtualPads/VirtualpadTool.Designer.cs
+++ b/BizHawk.Client.EmuHawk/tools/VirtualPads/VirtualpadTool.Designer.cs
@@ -44,6 +44,7 @@
this.ExitMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.PadsSubMenu = new System.Windows.Forms.ToolStripMenuItem();
this.ClearAllMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.StickyMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.PadMenu.SuspendLayout();
this.SuspendLayout();
//
@@ -165,10 +166,12 @@
// PadsSubMenu
//
this.PadsSubMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
- this.ClearAllMenuItem});
+ this.ClearAllMenuItem,
+ this.StickyMenuItem});
this.PadsSubMenu.Name = "PadsSubMenu";
this.PadsSubMenu.Size = new System.Drawing.Size(44, 20);
this.PadsSubMenu.Text = "&Pads";
+ this.PadsSubMenu.DropDownOpened += new System.EventHandler(this.PadsSubMenu_DropDownOpened);
//
// ClearAllMenuItem
//
@@ -178,6 +181,13 @@
this.ClearAllMenuItem.Text = "&Clear All";
this.ClearAllMenuItem.Click += new System.EventHandler(this.ClearAllMenuItem_Click);
//
+ // StickyMenuItem
+ //
+ this.StickyMenuItem.Name = "StickyMenuItem";
+ this.StickyMenuItem.Size = new System.Drawing.Size(174, 22);
+ this.StickyMenuItem.Text = "Sticky";
+ this.StickyMenuItem.Click += new System.EventHandler(this.StickyMenuItem_Click);
+ //
// VirtualpadTool
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
@@ -215,5 +225,6 @@
private System.Windows.Forms.CheckBox StickyBox;
private System.Windows.Forms.ToolStripMenuItem ClearAllMenuItem;
private System.Windows.Forms.GroupBox ControllerBox;
+ private System.Windows.Forms.ToolStripMenuItem StickyMenuItem;
}
}
\ No newline at end of file
diff --git a/BizHawk.Client.EmuHawk/tools/VirtualPads/VirtualpadTool.cs b/BizHawk.Client.EmuHawk/tools/VirtualPads/VirtualpadTool.cs
index 4b7c43da61..ba01aa5276 100644
--- a/BizHawk.Client.EmuHawk/tools/VirtualPads/VirtualpadTool.cs
+++ b/BizHawk.Client.EmuHawk/tools/VirtualPads/VirtualpadTool.cs
@@ -13,12 +13,12 @@ namespace BizHawk.Client.EmuHawk
private int _defaultWidth;
private int _defaultHeight;
- private List Pads
+ private List Pads
{
get
{
return ControllerBox.Controls
- .OfType()
+ .OfType()
.ToList();
}
}
@@ -26,6 +26,8 @@ namespace BizHawk.Client.EmuHawk
public VirtualpadTool()
{
InitializeComponent();
+ Closing += (o, e) => SaveConfigSettings();
+ TopMost = Global.Config.VirtualPadSettings.TopMost;
}
private void VirtualpadTool_Load(object sender, EventArgs e)
@@ -68,12 +70,12 @@ namespace BizHawk.Client.EmuHawk
switch(Global.Emulator.SystemId)
{
case "NES":
- ControllerBox.Controls.Add(new VirtualPadControl(
+ ControllerBox.Controls.Add(new VirtualPad(
NesSchema.StandardController(1))
{
Location = new Point(15, 15)
});
- ControllerBox.Controls.Add(new VirtualPadControl(
+ ControllerBox.Controls.Add(new VirtualPad(
NesSchema.StandardController(2))
{
Location = new Point(200, 15)
@@ -83,6 +85,16 @@ namespace BizHawk.Client.EmuHawk
}
}
+ private void SaveConfigSettings()
+ {
+ Global.Config.VirtualPadSettings.Wndx = Location.X;
+ Global.Config.VirtualPadSettings.Wndy = Location.Y;
+ Global.Config.VirtualPadSettings.Width = Right - Left;
+ Global.Config.VirtualPadSettings.Height = Bottom - Top;
+
+ Global.Config.VirtualPadSticky = StickyBox.Checked;
+ }
+
private void RefreshFloatingWindowControl()
{
Owner = Global.Config.VirtualPadSettings.FloatingWindow ? null : GlobalWin.MainForm;
@@ -110,7 +122,7 @@ namespace BizHawk.Client.EmuHawk
return;
}
- if (!Global.Config.VirtualPadSticky)
+ if (!StickyBox.Checked)
{
Pads.ForEach(pad => pad.Clear());
}
@@ -167,11 +179,21 @@ namespace BizHawk.Client.EmuHawk
Close();
}
+ private void PadsSubMenu_DropDownOpened(object sender, EventArgs e)
+ {
+ StickyMenuItem.Checked = StickyBox.Checked;
+ }
+
private void ClearAllMenuItem_Click(object sender, EventArgs e)
{
ClearVirtualPadHolds();
}
+ private void StickyMenuItem_Click(object sender, EventArgs e)
+ {
+ StickyBox.Checked ^= true;
+ }
+
#endregion
#endregion
diff --git a/BizHawk.Client.EmuHawk/tools/VirtualPads/controls/AnalogControlPanel.cs b/BizHawk.Client.EmuHawk/tools/VirtualPads/controls/AnalogControlPanel.cs
index 72e95d0c55..e1367e0a7a 100644
--- a/BizHawk.Client.EmuHawk/tools/VirtualPads/controls/AnalogControlPanel.cs
+++ b/BizHawk.Client.EmuHawk/tools/VirtualPads/controls/AnalogControlPanel.cs
@@ -5,7 +5,7 @@ using BizHawk.Client.Common;
namespace BizHawk.Client.EmuHawk
{
- public sealed class AnalogControlPanel : Panel
+ public sealed class AnalogControlPanel : Panel, IVirtualPadControl
{
public int X = 0;
public int Y = 0;
diff --git a/BizHawk.Client.EmuHawk/tools/VirtualPads/controls/IVirtualPadControl.cs b/BizHawk.Client.EmuHawk/tools/VirtualPads/controls/IVirtualPadControl.cs
new file mode 100644
index 0000000000..8cdef35685
--- /dev/null
+++ b/BizHawk.Client.EmuHawk/tools/VirtualPads/controls/IVirtualPadControl.cs
@@ -0,0 +1,7 @@
+namespace BizHawk.Client.EmuHawk
+{
+ public interface IVirtualPadControl
+ {
+ void Clear();
+ }
+}
diff --git a/BizHawk.Client.EmuHawk/tools/VirtualPads/controls/VirtualPadButton.cs b/BizHawk.Client.EmuHawk/tools/VirtualPads/controls/VirtualPadButton.cs
index 342621da59..b206131f5d 100644
--- a/BizHawk.Client.EmuHawk/tools/VirtualPads/controls/VirtualPadButton.cs
+++ b/BizHawk.Client.EmuHawk/tools/VirtualPads/controls/VirtualPadButton.cs
@@ -6,7 +6,7 @@ using BizHawk.Client.Common;
namespace BizHawk.Client.EmuHawk
{
- public class VirtualPadButton : CheckBox
+ public class VirtualPadButton : CheckBox, IVirtualPadControl
{
private bool _rightClicked = false;
@@ -25,14 +25,14 @@ namespace BizHawk.Client.EmuHawk
{
switch (m.Msg)
{
- case 0x0204://WM_RBUTTONDOWN
+ case 0x0204: // WM_RBUTTONDOWN
_rightClicked = true;
- ForeColor = Color.Red;
+ ForeColor = SystemColors.HotTrack;
Checked ^= true;
return;
- case 0x0205://WM_RBUTTONUP
+ case 0x0205: // WM_RBUTTONUP
return;
- case 0x0206://WM_RBUTTONDBLCLK
+ case 0x0206: // WM_RBUTTONDBLCLK
return;
}