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; }