Virtual Pads - implement Always on Top and Floating Window and lots of code cleanup
This commit is contained in:
parent
f3755975a1
commit
83be118d03
|
@ -156,7 +156,7 @@ namespace BizHawk.Client.Common
|
||||||
// Sound options
|
// Sound options
|
||||||
public bool SoundEnabled = true;
|
public bool SoundEnabled = true;
|
||||||
public bool MuteFrameAdvance = true;
|
public bool MuteFrameAdvance = true;
|
||||||
public int SoundVolume = 100; //Range 0-100
|
public int SoundVolume = 100; // Range 0-100
|
||||||
public bool SoundThrottle = false;
|
public bool SoundThrottle = false;
|
||||||
public string SoundDevice = "";
|
public string SoundDevice = "";
|
||||||
|
|
||||||
|
@ -463,14 +463,10 @@ namespace BizHawk.Client.Common
|
||||||
public RecentFiles RecentTas = new RecentFiles(8);
|
public RecentFiles RecentTas = new RecentFiles(8);
|
||||||
|
|
||||||
// VirtualPad Dialog
|
// VirtualPad Dialog
|
||||||
|
public ToolDialogSettings VirtualPadSettings = new ToolDialogSettings();
|
||||||
public bool VirtualPadsUpdatePads = true;
|
public bool VirtualPadsUpdatePads = true;
|
||||||
public bool VirtualPadSaveWindowPosition = true;
|
|
||||||
public bool AutoloadVirtualPad = false;
|
public bool AutoloadVirtualPad = false;
|
||||||
public bool VirtualPadSticky = true;
|
public bool VirtualPadSticky = true;
|
||||||
public int VPadWndx = -1;
|
|
||||||
public int VPadWndy = -1;
|
|
||||||
public int VPadWidth = -1;
|
|
||||||
public int VPadHeight = -1;
|
|
||||||
|
|
||||||
// NES Game Genie Encoder/Decoder
|
// NES Game Genie Encoder/Decoder
|
||||||
public bool NESGGAutoload = false;
|
public bool NESGGAutoload = false;
|
||||||
|
|
|
@ -32,18 +32,19 @@
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(VirtualPadForm));
|
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(VirtualPadForm));
|
||||||
this.ControllerBox = new System.Windows.Forms.GroupBox();
|
this.ControllerBox = new System.Windows.Forms.GroupBox();
|
||||||
this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components);
|
this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components);
|
||||||
this.clearToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
this.ClearMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.menuStrip1 = new MenuStripEx();
|
this.menuStrip1 = new MenuStripEx();
|
||||||
this.optionsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
this.OptionsSubMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.alwaysOnTopToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
this.AutoloadMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.autolaodToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
this.AlwaysOnTopMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.saveWindowPositionToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
this.SaveWindowPositionMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
|
this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
|
||||||
this.restoreDefaultSettingsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
this.RestoreDefaultSettingsMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
|
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
|
||||||
this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
this.ExitMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.StickyBox = new System.Windows.Forms.CheckBox();
|
this.StickyBox = new System.Windows.Forms.CheckBox();
|
||||||
this.button1 = new System.Windows.Forms.Button();
|
this.ClearButton = new System.Windows.Forms.Button();
|
||||||
|
this.FloatingWindowMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.contextMenuStrip1.SuspendLayout();
|
this.contextMenuStrip1.SuspendLayout();
|
||||||
this.menuStrip1.SuspendLayout();
|
this.menuStrip1.SuspendLayout();
|
||||||
this.SuspendLayout();
|
this.SuspendLayout();
|
||||||
|
@ -64,88 +65,89 @@
|
||||||
// contextMenuStrip1
|
// contextMenuStrip1
|
||||||
//
|
//
|
||||||
this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
this.clearToolStripMenuItem});
|
this.ClearMenuItem});
|
||||||
this.contextMenuStrip1.Name = "contextMenuStrip1";
|
this.contextMenuStrip1.Name = "contextMenuStrip1";
|
||||||
this.contextMenuStrip1.Size = new System.Drawing.Size(102, 26);
|
this.contextMenuStrip1.Size = new System.Drawing.Size(102, 26);
|
||||||
//
|
//
|
||||||
// clearToolStripMenuItem
|
// ClearMenuItem
|
||||||
//
|
//
|
||||||
this.clearToolStripMenuItem.Name = "clearToolStripMenuItem";
|
this.ClearMenuItem.Name = "ClearMenuItem";
|
||||||
this.clearToolStripMenuItem.Size = new System.Drawing.Size(101, 22);
|
this.ClearMenuItem.Size = new System.Drawing.Size(101, 22);
|
||||||
this.clearToolStripMenuItem.Text = "&Clear";
|
this.ClearMenuItem.Text = "&Clear";
|
||||||
this.clearToolStripMenuItem.Click += new System.EventHandler(this.clearToolStripMenuItem_Click);
|
this.ClearMenuItem.Click += new System.EventHandler(this.ClearMenuItem_Click);
|
||||||
//
|
//
|
||||||
// menuStrip1
|
// menuStrip1
|
||||||
//
|
//
|
||||||
this.menuStrip1.ClickThrough = true;
|
this.menuStrip1.ClickThrough = true;
|
||||||
this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
this.optionsToolStripMenuItem});
|
this.OptionsSubMenu});
|
||||||
this.menuStrip1.Location = new System.Drawing.Point(0, 0);
|
this.menuStrip1.Location = new System.Drawing.Point(0, 0);
|
||||||
this.menuStrip1.Name = "menuStrip1";
|
this.menuStrip1.Name = "menuStrip1";
|
||||||
this.menuStrip1.Size = new System.Drawing.Size(452, 24);
|
this.menuStrip1.Size = new System.Drawing.Size(452, 24);
|
||||||
this.menuStrip1.TabIndex = 6;
|
this.menuStrip1.TabIndex = 6;
|
||||||
this.menuStrip1.Text = "menuStrip1";
|
this.menuStrip1.Text = "menuStrip1";
|
||||||
//
|
//
|
||||||
// optionsToolStripMenuItem
|
// OptionsSubMenu
|
||||||
//
|
//
|
||||||
this.optionsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
this.OptionsSubMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
this.alwaysOnTopToolStripMenuItem,
|
this.AutoloadMenuItem,
|
||||||
this.autolaodToolStripMenuItem,
|
this.SaveWindowPositionMenuItem,
|
||||||
this.saveWindowPositionToolStripMenuItem,
|
this.AlwaysOnTopMenuItem,
|
||||||
|
this.FloatingWindowMenuItem,
|
||||||
this.toolStripSeparator2,
|
this.toolStripSeparator2,
|
||||||
this.restoreDefaultSettingsToolStripMenuItem,
|
this.RestoreDefaultSettingsMenuItem,
|
||||||
this.toolStripSeparator1,
|
this.toolStripSeparator1,
|
||||||
this.exitToolStripMenuItem});
|
this.ExitMenuItem});
|
||||||
this.optionsToolStripMenuItem.Name = "optionsToolStripMenuItem";
|
this.OptionsSubMenu.Name = "OptionsSubMenu";
|
||||||
this.optionsToolStripMenuItem.Size = new System.Drawing.Size(61, 20);
|
this.OptionsSubMenu.Size = new System.Drawing.Size(61, 20);
|
||||||
this.optionsToolStripMenuItem.Text = "&Options";
|
this.OptionsSubMenu.Text = "&Options";
|
||||||
this.optionsToolStripMenuItem.DropDownOpened += new System.EventHandler(this.optionsToolStripMenuItem_DropDownOpened);
|
this.OptionsSubMenu.DropDownOpened += new System.EventHandler(this.OptionsSubMenu_DropDownOpened);
|
||||||
//
|
//
|
||||||
// alwaysOnTopToolStripMenuItem
|
// AutoloadMenuItem
|
||||||
//
|
//
|
||||||
this.alwaysOnTopToolStripMenuItem.Name = "alwaysOnTopToolStripMenuItem";
|
this.AutoloadMenuItem.Name = "AutoloadMenuItem";
|
||||||
this.alwaysOnTopToolStripMenuItem.Size = new System.Drawing.Size(199, 22);
|
this.AutoloadMenuItem.Size = new System.Drawing.Size(199, 22);
|
||||||
this.alwaysOnTopToolStripMenuItem.Text = "Always On Top";
|
this.AutoloadMenuItem.Text = "&Autoload";
|
||||||
this.alwaysOnTopToolStripMenuItem.Click += new System.EventHandler(this.alwaysOnTopToolStripMenuItem_Click);
|
this.AutoloadMenuItem.Click += new System.EventHandler(this.AutoloadMenuItem_Click);
|
||||||
//
|
//
|
||||||
// autolaodToolStripMenuItem
|
// AlwaysOnTopMenuItem
|
||||||
//
|
//
|
||||||
this.autolaodToolStripMenuItem.Name = "autolaodToolStripMenuItem";
|
this.AlwaysOnTopMenuItem.Name = "AlwaysOnTopMenuItem";
|
||||||
this.autolaodToolStripMenuItem.Size = new System.Drawing.Size(199, 22);
|
this.AlwaysOnTopMenuItem.Size = new System.Drawing.Size(199, 22);
|
||||||
this.autolaodToolStripMenuItem.Text = "&Autoload";
|
this.AlwaysOnTopMenuItem.Text = "Always On Top";
|
||||||
this.autolaodToolStripMenuItem.Click += new System.EventHandler(this.autolaodToolStripMenuItem_Click);
|
this.AlwaysOnTopMenuItem.Click += new System.EventHandler(this.AlwaysOnTopMenuItem_Click);
|
||||||
//
|
//
|
||||||
// saveWindowPositionToolStripMenuItem
|
// SaveWindowPositionMenuItem
|
||||||
//
|
//
|
||||||
this.saveWindowPositionToolStripMenuItem.Name = "saveWindowPositionToolStripMenuItem";
|
this.SaveWindowPositionMenuItem.Name = "SaveWindowPositionMenuItem";
|
||||||
this.saveWindowPositionToolStripMenuItem.Size = new System.Drawing.Size(199, 22);
|
this.SaveWindowPositionMenuItem.Size = new System.Drawing.Size(199, 22);
|
||||||
this.saveWindowPositionToolStripMenuItem.Text = "&Save Window Position";
|
this.SaveWindowPositionMenuItem.Text = "&Save Window Position";
|
||||||
this.saveWindowPositionToolStripMenuItem.Click += new System.EventHandler(this.saveWindowPositionToolStripMenuItem_Click);
|
this.SaveWindowPositionMenuItem.Click += new System.EventHandler(this.SaveWindowPositionMenuItem_Click);
|
||||||
//
|
//
|
||||||
// toolStripSeparator2
|
// toolStripSeparator2
|
||||||
//
|
//
|
||||||
this.toolStripSeparator2.Name = "toolStripSeparator2";
|
this.toolStripSeparator2.Name = "toolStripSeparator2";
|
||||||
this.toolStripSeparator2.Size = new System.Drawing.Size(196, 6);
|
this.toolStripSeparator2.Size = new System.Drawing.Size(196, 6);
|
||||||
//
|
//
|
||||||
// restoreDefaultSettingsToolStripMenuItem
|
// RestoreDefaultSettingsMenuItem
|
||||||
//
|
//
|
||||||
this.restoreDefaultSettingsToolStripMenuItem.Name = "restoreDefaultSettingsToolStripMenuItem";
|
this.RestoreDefaultSettingsMenuItem.Name = "RestoreDefaultSettingsMenuItem";
|
||||||
this.restoreDefaultSettingsToolStripMenuItem.Size = new System.Drawing.Size(199, 22);
|
this.RestoreDefaultSettingsMenuItem.Size = new System.Drawing.Size(199, 22);
|
||||||
this.restoreDefaultSettingsToolStripMenuItem.Text = "Restore Default Settings";
|
this.RestoreDefaultSettingsMenuItem.Text = "Restore Default Settings";
|
||||||
this.restoreDefaultSettingsToolStripMenuItem.Click += new System.EventHandler(this.restoreDefaultSettingsToolStripMenuItem_Click);
|
this.RestoreDefaultSettingsMenuItem.Click += new System.EventHandler(this.RestoreDefaultSettingsMenuItem_Click);
|
||||||
//
|
//
|
||||||
// toolStripSeparator1
|
// toolStripSeparator1
|
||||||
//
|
//
|
||||||
this.toolStripSeparator1.Name = "toolStripSeparator1";
|
this.toolStripSeparator1.Name = "toolStripSeparator1";
|
||||||
this.toolStripSeparator1.Size = new System.Drawing.Size(196, 6);
|
this.toolStripSeparator1.Size = new System.Drawing.Size(196, 6);
|
||||||
//
|
//
|
||||||
// exitToolStripMenuItem
|
// ExitMenuItem
|
||||||
//
|
//
|
||||||
this.exitToolStripMenuItem.Name = "exitToolStripMenuItem";
|
this.ExitMenuItem.Name = "ExitMenuItem";
|
||||||
this.exitToolStripMenuItem.ShortcutKeyDisplayString = "Alt+F4";
|
this.ExitMenuItem.ShortcutKeyDisplayString = "Alt+F4";
|
||||||
this.exitToolStripMenuItem.Size = new System.Drawing.Size(199, 22);
|
this.ExitMenuItem.Size = new System.Drawing.Size(199, 22);
|
||||||
this.exitToolStripMenuItem.Text = "E&xit";
|
this.ExitMenuItem.Text = "E&xit";
|
||||||
this.exitToolStripMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click);
|
this.ExitMenuItem.Click += new System.EventHandler(this.ExitMenuItem_Click);
|
||||||
//
|
//
|
||||||
// StickyBox
|
// StickyBox
|
||||||
//
|
//
|
||||||
|
@ -159,23 +161,30 @@
|
||||||
this.StickyBox.UseVisualStyleBackColor = true;
|
this.StickyBox.UseVisualStyleBackColor = true;
|
||||||
this.StickyBox.CheckedChanged += new System.EventHandler(this.StickyBox_CheckedChanged);
|
this.StickyBox.CheckedChanged += new System.EventHandler(this.StickyBox_CheckedChanged);
|
||||||
//
|
//
|
||||||
// button1
|
// ClearButton
|
||||||
//
|
//
|
||||||
this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
this.ClearButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||||
this.button1.Location = new System.Drawing.Point(79, 279);
|
this.ClearButton.Location = new System.Drawing.Point(79, 279);
|
||||||
this.button1.Name = "button1";
|
this.ClearButton.Name = "ClearButton";
|
||||||
this.button1.Size = new System.Drawing.Size(75, 23);
|
this.ClearButton.Size = new System.Drawing.Size(75, 23);
|
||||||
this.button1.TabIndex = 8;
|
this.ClearButton.TabIndex = 8;
|
||||||
this.button1.Text = "&Clear";
|
this.ClearButton.Text = "&Clear";
|
||||||
this.button1.UseVisualStyleBackColor = true;
|
this.ClearButton.UseVisualStyleBackColor = true;
|
||||||
this.button1.Click += new System.EventHandler(this.button1_Click);
|
this.ClearButton.Click += new System.EventHandler(this.ClearMenuItem_Click);
|
||||||
|
//
|
||||||
|
// FloatingWindowMenuItem
|
||||||
|
//
|
||||||
|
this.FloatingWindowMenuItem.Name = "FloatingWindowMenuItem";
|
||||||
|
this.FloatingWindowMenuItem.Size = new System.Drawing.Size(199, 22);
|
||||||
|
this.FloatingWindowMenuItem.Text = "Floating Window";
|
||||||
|
this.FloatingWindowMenuItem.Click += new System.EventHandler(this.FloatingWindowMenuItem_Click);
|
||||||
//
|
//
|
||||||
// VirtualPadForm
|
// VirtualPadForm
|
||||||
//
|
//
|
||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
this.ClientSize = new System.Drawing.Size(452, 312);
|
this.ClientSize = new System.Drawing.Size(452, 312);
|
||||||
this.Controls.Add(this.button1);
|
this.Controls.Add(this.ClearButton);
|
||||||
this.Controls.Add(this.ControllerBox);
|
this.Controls.Add(this.ControllerBox);
|
||||||
this.Controls.Add(this.StickyBox);
|
this.Controls.Add(this.StickyBox);
|
||||||
this.Controls.Add(this.menuStrip1);
|
this.Controls.Add(this.menuStrip1);
|
||||||
|
@ -198,17 +207,18 @@
|
||||||
|
|
||||||
private System.Windows.Forms.GroupBox ControllerBox;
|
private System.Windows.Forms.GroupBox ControllerBox;
|
||||||
private MenuStripEx menuStrip1;
|
private MenuStripEx menuStrip1;
|
||||||
private System.Windows.Forms.ToolStripMenuItem optionsToolStripMenuItem;
|
private System.Windows.Forms.ToolStripMenuItem OptionsSubMenu;
|
||||||
private System.Windows.Forms.ToolStripMenuItem autolaodToolStripMenuItem;
|
private System.Windows.Forms.ToolStripMenuItem AutoloadMenuItem;
|
||||||
private System.Windows.Forms.ToolStripMenuItem saveWindowPositionToolStripMenuItem;
|
private System.Windows.Forms.ToolStripMenuItem SaveWindowPositionMenuItem;
|
||||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;
|
private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;
|
||||||
private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem;
|
private System.Windows.Forms.ToolStripMenuItem ExitMenuItem;
|
||||||
private System.Windows.Forms.CheckBox StickyBox;
|
private System.Windows.Forms.CheckBox StickyBox;
|
||||||
private System.Windows.Forms.ContextMenuStrip contextMenuStrip1;
|
private System.Windows.Forms.ContextMenuStrip contextMenuStrip1;
|
||||||
private System.Windows.Forms.ToolStripMenuItem clearToolStripMenuItem;
|
private System.Windows.Forms.ToolStripMenuItem ClearMenuItem;
|
||||||
private System.Windows.Forms.ToolStripMenuItem restoreDefaultSettingsToolStripMenuItem;
|
private System.Windows.Forms.ToolStripMenuItem RestoreDefaultSettingsMenuItem;
|
||||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
|
private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
|
||||||
private System.Windows.Forms.ToolStripMenuItem alwaysOnTopToolStripMenuItem;
|
private System.Windows.Forms.ToolStripMenuItem AlwaysOnTopMenuItem;
|
||||||
private System.Windows.Forms.Button button1;
|
private System.Windows.Forms.Button ClearButton;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem FloatingWindowMenuItem;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,261 +1,41 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
|
using System.Linq;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
|
|
||||||
using BizHawk.Client.Common;
|
using BizHawk.Client.Common;
|
||||||
using BizHawk.Emulation.Cores.Nintendo.N64;
|
|
||||||
|
|
||||||
|
|
||||||
namespace BizHawk.Client.EmuHawk
|
namespace BizHawk.Client.EmuHawk
|
||||||
{
|
{
|
||||||
public partial class VirtualPadForm : Form, IToolForm
|
public partial class VirtualPadForm : Form, IToolForm
|
||||||
{
|
{
|
||||||
private int defaultWidth;
|
// TODO: UpdateValues doesn't support all cores, and is probably wrong for gens, also done in an unsustainable way
|
||||||
private int defaultHeight;
|
|
||||||
private readonly List<IVirtualPad> _pads = new List<IVirtualPad>();
|
private readonly List<IVirtualPad> _pads = new List<IVirtualPad>();
|
||||||
|
|
||||||
|
private int _defaultWidth;
|
||||||
|
private int _defaultHeight;
|
||||||
|
|
||||||
|
#region Public API
|
||||||
|
|
||||||
public bool AskSave() { return true; }
|
public bool AskSave() { return true; }
|
||||||
public bool UpdateBefore { get { return false; } }
|
public bool UpdateBefore { get { return false; } }
|
||||||
|
|
||||||
public VirtualPadForm()
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
Closing += (o, e) => SaveConfigSettings();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void VirtualPadForm_Load(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
LoadConfigSettings();
|
|
||||||
LoadPads();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void LoadConfigSettings()
|
|
||||||
{
|
|
||||||
defaultWidth = Size.Width;
|
|
||||||
defaultHeight = Size.Height;
|
|
||||||
|
|
||||||
StickyBox.Checked = Global.Config.VirtualPadSticky;
|
|
||||||
|
|
||||||
if (Global.Config.VirtualPadSaveWindowPosition && Global.Config.VPadWndx >= 0 && Global.Config.VPadWndy >= 0)
|
|
||||||
{
|
|
||||||
Location = new Point(Global.Config.VPadWndx, Global.Config.VPadWndy);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Global.Config.VirtualPadSaveWindowPosition && Global.Config.VPadWidth >= 0 && Global.Config.VPadHeight >= 0)
|
|
||||||
{
|
|
||||||
Size = new Size(Global.Config.VPadWidth, Global.Config.VPadHeight);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void SaveConfigSettings()
|
|
||||||
{
|
|
||||||
Global.Config.VPadWndx = Location.X;
|
|
||||||
Global.Config.VPadWndy = Location.Y;
|
|
||||||
|
|
||||||
Global.Config.VPadWidth = Right - Left;
|
|
||||||
Global.Config.VPadHeight = Bottom - Top;
|
|
||||||
|
|
||||||
_pads.Clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void LoadPads()
|
|
||||||
{
|
|
||||||
switch (Global.Emulator.SystemId)
|
|
||||||
{
|
|
||||||
case "A26":
|
|
||||||
VirtualPadA26 ataripad1 = new VirtualPadA26 { Location = new Point(8, 19), Controller = "P1" };
|
|
||||||
VirtualPadA26 ataripad2 = new VirtualPadA26 { Location = new Point(188, 19), Controller = "P2" };
|
|
||||||
_pads.Add(ataripad1);
|
|
||||||
_pads.Add(ataripad2);
|
|
||||||
ControllerBox.Controls.Add(ataripad1);
|
|
||||||
ControllerBox.Controls.Add(ataripad2);
|
|
||||||
VirtualPadA26Control ataricontrols = new VirtualPadA26Control { Location = new Point(8, 109) };
|
|
||||||
_pads.Add(ataricontrols);
|
|
||||||
ControllerBox.Controls.Add(_pads[2] as Control);
|
|
||||||
break;
|
|
||||||
case "A78":
|
|
||||||
VirtualPadA78 atari78pad1 = new VirtualPadA78 { Location = new Point(8, 19), Controller = "P1" };
|
|
||||||
VirtualPadA78 atari78pad2 = new VirtualPadA78 { Location = new Point(150, 19), Controller = "P2" };
|
|
||||||
_pads.Add(atari78pad1);
|
|
||||||
_pads.Add(atari78pad2);
|
|
||||||
ControllerBox.Controls.Add(atari78pad1);
|
|
||||||
ControllerBox.Controls.Add(atari78pad2);
|
|
||||||
VirtualPadA78Control atari78controls = new VirtualPadA78Control { Location = new Point(8, 125) };
|
|
||||||
_pads.Add(atari78controls);
|
|
||||||
ControllerBox.Controls.Add(_pads[2] as Control);
|
|
||||||
break;
|
|
||||||
case "NES":
|
|
||||||
VirtualPadNES nespad1 = new VirtualPadNES { Location = new Point(8, 19), Controller = "P1" };
|
|
||||||
VirtualPadNES nespad2 = new VirtualPadNES { Location = new Point(188, 19), Controller = "P2" };
|
|
||||||
_pads.Add(nespad1);
|
|
||||||
_pads.Add(nespad2);
|
|
||||||
ControllerBox.Controls.Add(nespad1);
|
|
||||||
ControllerBox.Controls.Add(nespad2);
|
|
||||||
VirtualPadNESControl controlpad1 = new VirtualPadNESControl { Location = new Point(8, 109) };
|
|
||||||
_pads.Add(controlpad1);
|
|
||||||
ControllerBox.Controls.Add(controlpad1);
|
|
||||||
break;
|
|
||||||
case "N64":
|
|
||||||
VirtualPadN64 n64pad1 = new VirtualPadN64 { Location = new Point(8, 19), Controller = "P1" };
|
|
||||||
VirtualPadN64 n64pad2 = new VirtualPadN64 { Location = new Point(208, 19), Controller = "P2" };
|
|
||||||
VirtualPadN64 n64pad3 = new VirtualPadN64 { Location = new Point(408, 19), Controller = "P3" };
|
|
||||||
VirtualPadN64 n64pad4 = new VirtualPadN64 { Location = new Point(608, 19), Controller = "P4" };
|
|
||||||
_pads.Add(n64pad1);
|
|
||||||
_pads.Add(n64pad2);
|
|
||||||
_pads.Add(n64pad3);
|
|
||||||
_pads.Add(n64pad4);
|
|
||||||
ControllerBox.Controls.Add(n64pad1);
|
|
||||||
ControllerBox.Controls.Add(n64pad2);
|
|
||||||
ControllerBox.Controls.Add(n64pad3);
|
|
||||||
ControllerBox.Controls.Add(n64pad4);
|
|
||||||
VirtualPadN64Control n64controlpad1 = new VirtualPadN64Control { Location = new Point(8, 350) };
|
|
||||||
_pads.Add(n64controlpad1);
|
|
||||||
ControllerBox.Controls.Add(n64controlpad1);
|
|
||||||
break;
|
|
||||||
case "SMS":
|
|
||||||
case "SG":
|
|
||||||
case "GG":
|
|
||||||
VirtualPadSMS smspad1 = new VirtualPadSMS { Location = new Point(8, 19), Controller = "P1" };
|
|
||||||
VirtualPadSMS smspad2 = new VirtualPadSMS { Location = new Point(188, 19), Controller = "P2" };
|
|
||||||
_pads.Add(smspad1);
|
|
||||||
_pads.Add(smspad2);
|
|
||||||
ControllerBox.Controls.Add(smspad1);
|
|
||||||
ControllerBox.Controls.Add(smspad2);
|
|
||||||
VirtualPadSMSControl controlpad2 = new VirtualPadSMSControl { Location = new Point(8, 109) };
|
|
||||||
_pads.Add(controlpad2);
|
|
||||||
ControllerBox.Controls.Add(_pads[2] as Control);
|
|
||||||
break;
|
|
||||||
case "PCE":
|
|
||||||
case "PCECD":
|
|
||||||
case "SGX":
|
|
||||||
VirtualPadPCE pcepad1 = new VirtualPadPCE { Location = new Point(8, 19), Controller = "P1" };
|
|
||||||
VirtualPadPCE pcepad2 = new VirtualPadPCE { Location = new Point(188, 19), Controller = "P2" };
|
|
||||||
VirtualPadPCE pcepad3 = new VirtualPadPCE { Location = new Point(8, 109), Controller = "P3" };
|
|
||||||
VirtualPadPCE pcepad4 = new VirtualPadPCE { Location = new Point(188, 109), Controller = "P4" };
|
|
||||||
_pads.Add(pcepad1);
|
|
||||||
_pads.Add(pcepad2);
|
|
||||||
_pads.Add(pcepad3);
|
|
||||||
_pads.Add(pcepad4);
|
|
||||||
ControllerBox.Controls.Add(pcepad1);
|
|
||||||
ControllerBox.Controls.Add(pcepad2);
|
|
||||||
ControllerBox.Controls.Add(pcepad3);
|
|
||||||
ControllerBox.Controls.Add(pcepad4);
|
|
||||||
break;
|
|
||||||
case "SNES":
|
|
||||||
VirtualPadSNES snespad1 = new VirtualPadSNES { Location = new Point(8, 19), Controller = "P1" };
|
|
||||||
VirtualPadSNES snespad2 = new VirtualPadSNES { Location = new Point(188, 19), Controller = "P2" };
|
|
||||||
VirtualPadSNES snespad3 = new VirtualPadSNES { Location = new Point(8, 95), Controller = "P3" };
|
|
||||||
VirtualPadSNES snespad4 = new VirtualPadSNES { Location = new Point(188, 95), Controller = "P4" };
|
|
||||||
VirtualPadSNESControl snescontrolpad = new VirtualPadSNESControl { Location = new Point(8, 170) };
|
|
||||||
_pads.Add(snespad1);
|
|
||||||
_pads.Add(snespad2);
|
|
||||||
_pads.Add(snespad3);
|
|
||||||
_pads.Add(snespad4);
|
|
||||||
_pads.Add(snescontrolpad);
|
|
||||||
ControllerBox.Controls.Add(snespad1);
|
|
||||||
ControllerBox.Controls.Add(snespad2);
|
|
||||||
ControllerBox.Controls.Add(snespad3);
|
|
||||||
ControllerBox.Controls.Add(snespad4);
|
|
||||||
ControllerBox.Controls.Add(snescontrolpad);
|
|
||||||
break;
|
|
||||||
case "GB":
|
|
||||||
case "GBC":
|
|
||||||
VirtualPadGB gbpad1 = new VirtualPadGB { Location = new Point(8, 19), Controller = "" };
|
|
||||||
_pads.Add(gbpad1);
|
|
||||||
ControllerBox.Controls.Add(gbpad1);
|
|
||||||
VirtualPadGBControl gbcontrolpad = new VirtualPadGBControl { Location = new Point(8, 109) };
|
|
||||||
_pads.Add(gbcontrolpad);
|
|
||||||
ControllerBox.Controls.Add(gbcontrolpad);
|
|
||||||
break;
|
|
||||||
case "GBA":
|
|
||||||
VirtualPadGBA gbapad1 = new VirtualPadGBA { Location = new Point(8, 19), Controller = "" };
|
|
||||||
_pads.Add(gbapad1);
|
|
||||||
ControllerBox.Controls.Add(gbapad1);
|
|
||||||
break;
|
|
||||||
case "GEN":
|
|
||||||
VirtualPadGen6Button genpad1 = new VirtualPadGen6Button { Location = new Point(8, 19), Controller = "P1" };
|
|
||||||
VirtualPadGen6Button genpad2 = new VirtualPadGen6Button { Location = new Point(195, 19), Controller = "P2" };
|
|
||||||
_pads.Add(genpad1);
|
|
||||||
_pads.Add(genpad2);
|
|
||||||
ControllerBox.Controls.Add(genpad1);
|
|
||||||
ControllerBox.Controls.Add(genpad2);
|
|
||||||
|
|
||||||
VirtualPadNESControl gencontrol = new VirtualPadNESControl { Location = new Point(8, 105) };
|
|
||||||
_pads.Add(gencontrol);
|
|
||||||
ControllerBox.Controls.Add(gencontrol);
|
|
||||||
|
|
||||||
break;
|
|
||||||
case "Coleco":
|
|
||||||
VirtualPadColeco coleco1 = new VirtualPadColeco { Location = new Point(8, 19), Controller = "P1" };
|
|
||||||
VirtualPadColeco coleco2 = new VirtualPadColeco { Location = new Point(130, 19), Controller = "P2" };
|
|
||||||
_pads.Add(coleco1);
|
|
||||||
_pads.Add(coleco2);
|
|
||||||
ControllerBox.Controls.Add(coleco1);
|
|
||||||
ControllerBox.Controls.Add(coleco2);
|
|
||||||
break;
|
|
||||||
case "C64":
|
|
||||||
VirtualPadC64Keyboard c64k = new VirtualPadC64Keyboard { Location = new Point(8, 19) };
|
|
||||||
_pads.Add(c64k);
|
|
||||||
ControllerBox.Controls.Add(c64k);
|
|
||||||
VirtualPadA26 _ataripad1 = new VirtualPadA26 { Location = new Point(8, 159), Controller = "P1" };
|
|
||||||
VirtualPadA26 _ataripad2 = new VirtualPadA26 { Location = new Point(218, 159), Controller = "P2" };
|
|
||||||
_pads.Add(_ataripad1);
|
|
||||||
_pads.Add(_ataripad2);
|
|
||||||
ControllerBox.Controls.Add(_ataripad1);
|
|
||||||
ControllerBox.Controls.Add(_ataripad2);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "SAT":
|
|
||||||
VirtualPadSaturn saturnpad1 = new VirtualPadSaturn { Location = new Point(8, 19), Controller = "P1" };
|
|
||||||
VirtualPadSaturn saturnpad2 = new VirtualPadSaturn { Location = new Point(213, 19), Controller = "P2" };
|
|
||||||
_pads.Add(saturnpad1);
|
|
||||||
_pads.Add(saturnpad2);
|
|
||||||
ControllerBox.Controls.Add(saturnpad1);
|
|
||||||
ControllerBox.Controls.Add(saturnpad2);
|
|
||||||
VirtualPadSaturnControl saturncontrols = new VirtualPadSaturnControl { Location = new Point(8, 125) };
|
|
||||||
_pads.Add(saturncontrols);
|
|
||||||
ControllerBox.Controls.Add(saturncontrols);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Hack for now
|
|
||||||
if (Global.Emulator.SystemId == "C64")
|
|
||||||
{
|
|
||||||
if (Width < 505)
|
|
||||||
{
|
|
||||||
Width = 505;
|
|
||||||
ControllerBox.Width = Width - 37;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void exitToolStripMenuItem_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
Close();
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override void OnClosed(EventArgs e)
|
|
||||||
{
|
|
||||||
Global.StickyXORAdapter.ClearStickies();
|
|
||||||
Global.StickyXORAdapter.ClearStickyFloats();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ClearVirtualPadHolds()
|
public void ClearVirtualPadHolds()
|
||||||
{
|
{
|
||||||
foreach (var controller in ControllerBox.Controls)
|
ControllerBox.Controls
|
||||||
{
|
.OfType<IVirtualPad>()
|
||||||
var pad = controller as IVirtualPad;
|
.ToList()
|
||||||
if (pad != null)
|
.ForEach(pad => pad.Clear());
|
||||||
{
|
|
||||||
pad.Clear();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Restart()
|
public void Restart()
|
||||||
{
|
{
|
||||||
if (!IsHandleCreated || IsDisposed) return;
|
if (!IsHandleCreated || IsDisposed)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
ControllerBox.Controls.Clear();
|
ControllerBox.Controls.Clear();
|
||||||
_pads.Clear();
|
_pads.Clear();
|
||||||
LoadPads();
|
LoadPads();
|
||||||
|
@ -263,12 +43,15 @@ namespace BizHawk.Client.EmuHawk
|
||||||
|
|
||||||
public void UpdateValues()
|
public void UpdateValues()
|
||||||
{
|
{
|
||||||
if (!IsHandleCreated || IsDisposed) return;
|
if (!IsHandleCreated || IsDisposed)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (Global.MovieSession.Movie.IsPlaying && !Global.MovieSession.Movie.IsFinished)
|
if (Global.MovieSession.Movie.IsPlaying && !Global.MovieSession.Movie.IsFinished)
|
||||||
{
|
{
|
||||||
string str = Global.MovieSession.Movie.GetInput(Global.Emulator.Frame);
|
var str = Global.MovieSession.Movie.GetInput(Global.Emulator.Frame);
|
||||||
if (Global.Config.VirtualPadsUpdatePads && str != "")
|
if (Global.Config.VirtualPadsUpdatePads && str != string.Empty)
|
||||||
{
|
{
|
||||||
switch (Global.Emulator.SystemId)
|
switch (Global.Emulator.SystemId)
|
||||||
{
|
{
|
||||||
|
@ -327,63 +110,230 @@ namespace BizHawk.Client.EmuHawk
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else if (!Global.Config.VirtualPadSticky)
|
||||||
{
|
{
|
||||||
if (!Global.Config.VirtualPadSticky)
|
_pads.ForEach(pad => pad.Clear());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public VirtualPadForm()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
Closing += (o, e) => SaveConfigSettings();
|
||||||
|
TopMost = Global.Config.VirtualPadSettings.TopMost;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
private void VirtualPadForm_Load(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
LoadConfigSettings();
|
||||||
|
LoadPads();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void LoadConfigSettings()
|
||||||
|
{
|
||||||
|
_defaultWidth = Size.Width;
|
||||||
|
_defaultHeight = Size.Height;
|
||||||
|
|
||||||
|
StickyBox.Checked = Global.Config.VirtualPadSticky;
|
||||||
|
|
||||||
|
if (Global.Config.VirtualPadSettings.UseWindowPosition)
|
||||||
|
{
|
||||||
|
Location = Global.Config.VirtualPadSettings.WindowPosition;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Global.Config.VirtualPadSettings.UseWindowPosition)
|
||||||
|
{
|
||||||
|
Size = Global.Config.VirtualPadSettings.WindowSize;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
|
_pads.Clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void LoadPads()
|
||||||
|
{
|
||||||
|
switch (Global.Emulator.SystemId)
|
||||||
|
{
|
||||||
|
case "A26":
|
||||||
|
var ataripad1 = new VirtualPadA26 { Location = new Point(8, 19), Controller = "P1" };
|
||||||
|
var ataripad2 = new VirtualPadA26 { Location = new Point(188, 19), Controller = "P2" };
|
||||||
|
_pads.Add(ataripad1);
|
||||||
|
_pads.Add(ataripad2);
|
||||||
|
ControllerBox.Controls.Add(ataripad1);
|
||||||
|
ControllerBox.Controls.Add(ataripad2);
|
||||||
|
var ataricontrols = new VirtualPadA26Control { Location = new Point(8, 109) };
|
||||||
|
_pads.Add(ataricontrols);
|
||||||
|
ControllerBox.Controls.Add(ataricontrols);
|
||||||
|
break;
|
||||||
|
case "A78":
|
||||||
|
var atari78pad1 = new VirtualPadA78 { Location = new Point(8, 19), Controller = "P1" };
|
||||||
|
var atari78pad2 = new VirtualPadA78 { Location = new Point(150, 19), Controller = "P2" };
|
||||||
|
_pads.Add(atari78pad1);
|
||||||
|
_pads.Add(atari78pad2);
|
||||||
|
ControllerBox.Controls.Add(atari78pad1);
|
||||||
|
ControllerBox.Controls.Add(atari78pad2);
|
||||||
|
var atari78controls = new VirtualPadA78Control { Location = new Point(8, 125) };
|
||||||
|
_pads.Add(atari78controls);
|
||||||
|
ControllerBox.Controls.Add(atari78controls);
|
||||||
|
break;
|
||||||
|
case "NES":
|
||||||
|
var nespad1 = new VirtualPadNES { Location = new Point(8, 19), Controller = "P1" };
|
||||||
|
var nespad2 = new VirtualPadNES { Location = new Point(188, 19), Controller = "P2" };
|
||||||
|
_pads.Add(nespad1);
|
||||||
|
_pads.Add(nespad2);
|
||||||
|
ControllerBox.Controls.Add(nespad1);
|
||||||
|
ControllerBox.Controls.Add(nespad2);
|
||||||
|
var controlpad1 = new VirtualPadNESControl { Location = new Point(8, 109) };
|
||||||
|
_pads.Add(controlpad1);
|
||||||
|
ControllerBox.Controls.Add(controlpad1);
|
||||||
|
break;
|
||||||
|
case "N64":
|
||||||
|
var n64pad1 = new VirtualPadN64 { Location = new Point(8, 19), Controller = "P1" };
|
||||||
|
var n64pad2 = new VirtualPadN64 { Location = new Point(208, 19), Controller = "P2" };
|
||||||
|
var n64pad3 = new VirtualPadN64 { Location = new Point(408, 19), Controller = "P3" };
|
||||||
|
var n64pad4 = new VirtualPadN64 { Location = new Point(608, 19), Controller = "P4" };
|
||||||
|
_pads.Add(n64pad1);
|
||||||
|
_pads.Add(n64pad2);
|
||||||
|
_pads.Add(n64pad3);
|
||||||
|
_pads.Add(n64pad4);
|
||||||
|
ControllerBox.Controls.Add(n64pad1);
|
||||||
|
ControllerBox.Controls.Add(n64pad2);
|
||||||
|
ControllerBox.Controls.Add(n64pad3);
|
||||||
|
ControllerBox.Controls.Add(n64pad4);
|
||||||
|
var n64controlpad1 = new VirtualPadN64Control { Location = new Point(8, 350) };
|
||||||
|
_pads.Add(n64controlpad1);
|
||||||
|
ControllerBox.Controls.Add(n64controlpad1);
|
||||||
|
break;
|
||||||
|
case "SMS":
|
||||||
|
case "SG":
|
||||||
|
case "GG":
|
||||||
|
var smspad1 = new VirtualPadSMS { Location = new Point(8, 19), Controller = "P1" };
|
||||||
|
var smspad2 = new VirtualPadSMS { Location = new Point(188, 19), Controller = "P2" };
|
||||||
|
_pads.Add(smspad1);
|
||||||
|
_pads.Add(smspad2);
|
||||||
|
ControllerBox.Controls.Add(smspad1);
|
||||||
|
ControllerBox.Controls.Add(smspad2);
|
||||||
|
var controlpad2 = new VirtualPadSMSControl { Location = new Point(8, 109) };
|
||||||
|
_pads.Add(controlpad2);
|
||||||
|
ControllerBox.Controls.Add(controlpad2);
|
||||||
|
break;
|
||||||
|
case "PCE":
|
||||||
|
case "PCECD":
|
||||||
|
case "SGX":
|
||||||
|
var pcepad1 = new VirtualPadPCE { Location = new Point(8, 19), Controller = "P1" };
|
||||||
|
var pcepad2 = new VirtualPadPCE { Location = new Point(188, 19), Controller = "P2" };
|
||||||
|
var pcepad3 = new VirtualPadPCE { Location = new Point(8, 109), Controller = "P3" };
|
||||||
|
var pcepad4 = new VirtualPadPCE { Location = new Point(188, 109), Controller = "P4" };
|
||||||
|
_pads.Add(pcepad1);
|
||||||
|
_pads.Add(pcepad2);
|
||||||
|
_pads.Add(pcepad3);
|
||||||
|
_pads.Add(pcepad4);
|
||||||
|
ControllerBox.Controls.Add(pcepad1);
|
||||||
|
ControllerBox.Controls.Add(pcepad2);
|
||||||
|
ControllerBox.Controls.Add(pcepad3);
|
||||||
|
ControllerBox.Controls.Add(pcepad4);
|
||||||
|
break;
|
||||||
|
case "SNES":
|
||||||
|
var snespad1 = new VirtualPadSNES { Location = new Point(8, 19), Controller = "P1" };
|
||||||
|
var snespad2 = new VirtualPadSNES { Location = new Point(188, 19), Controller = "P2" };
|
||||||
|
var snespad3 = new VirtualPadSNES { Location = new Point(8, 95), Controller = "P3" };
|
||||||
|
var snespad4 = new VirtualPadSNES { Location = new Point(188, 95), Controller = "P4" };
|
||||||
|
var snescontrolpad = new VirtualPadSNESControl { Location = new Point(8, 170) };
|
||||||
|
_pads.Add(snespad1);
|
||||||
|
_pads.Add(snespad2);
|
||||||
|
_pads.Add(snespad3);
|
||||||
|
_pads.Add(snespad4);
|
||||||
|
_pads.Add(snescontrolpad);
|
||||||
|
ControllerBox.Controls.Add(snespad1);
|
||||||
|
ControllerBox.Controls.Add(snespad2);
|
||||||
|
ControllerBox.Controls.Add(snespad3);
|
||||||
|
ControllerBox.Controls.Add(snespad4);
|
||||||
|
ControllerBox.Controls.Add(snescontrolpad);
|
||||||
|
break;
|
||||||
|
case "GB":
|
||||||
|
case "GBC":
|
||||||
|
var gbpad1 = new VirtualPadGB { Location = new Point(8, 19), Controller = string.Empty };
|
||||||
|
_pads.Add(gbpad1);
|
||||||
|
ControllerBox.Controls.Add(gbpad1);
|
||||||
|
var gbcontrolpad = new VirtualPadGBControl { Location = new Point(8, 109) };
|
||||||
|
_pads.Add(gbcontrolpad);
|
||||||
|
ControllerBox.Controls.Add(gbcontrolpad);
|
||||||
|
break;
|
||||||
|
case "GBA":
|
||||||
|
var gbapad1 = new VirtualPadGBA { Location = new Point(8, 19), Controller = string.Empty };
|
||||||
|
_pads.Add(gbapad1);
|
||||||
|
ControllerBox.Controls.Add(gbapad1);
|
||||||
|
break;
|
||||||
|
case "GEN":
|
||||||
|
var genpad1 = new VirtualPadGen6Button { Location = new Point(8, 19), Controller = "P1" };
|
||||||
|
var genpad2 = new VirtualPadGen6Button { Location = new Point(195, 19), Controller = "P2" };
|
||||||
|
_pads.Add(genpad1);
|
||||||
|
_pads.Add(genpad2);
|
||||||
|
ControllerBox.Controls.Add(genpad1);
|
||||||
|
ControllerBox.Controls.Add(genpad2);
|
||||||
|
|
||||||
|
var gencontrol = new VirtualPadNESControl { Location = new Point(8, 105) };
|
||||||
|
_pads.Add(gencontrol);
|
||||||
|
ControllerBox.Controls.Add(gencontrol);
|
||||||
|
|
||||||
|
break;
|
||||||
|
case "Coleco":
|
||||||
|
var coleco1 = new VirtualPadColeco { Location = new Point(8, 19), Controller = "P1" };
|
||||||
|
var coleco2 = new VirtualPadColeco { Location = new Point(130, 19), Controller = "P2" };
|
||||||
|
_pads.Add(coleco1);
|
||||||
|
_pads.Add(coleco2);
|
||||||
|
ControllerBox.Controls.Add(coleco1);
|
||||||
|
ControllerBox.Controls.Add(coleco2);
|
||||||
|
break;
|
||||||
|
case "C64":
|
||||||
|
var c64k = new VirtualPadC64Keyboard { Location = new Point(8, 19) };
|
||||||
|
_pads.Add(c64k);
|
||||||
|
ControllerBox.Controls.Add(c64k);
|
||||||
|
var _ataripad1 = new VirtualPadA26 { Location = new Point(8, 159), Controller = "P1" };
|
||||||
|
var _ataripad2 = new VirtualPadA26 { Location = new Point(218, 159), Controller = "P2" };
|
||||||
|
_pads.Add(_ataripad1);
|
||||||
|
_pads.Add(_ataripad2);
|
||||||
|
ControllerBox.Controls.Add(_ataripad1);
|
||||||
|
ControllerBox.Controls.Add(_ataripad2);
|
||||||
|
break;
|
||||||
|
case "SAT":
|
||||||
|
var saturnpad1 = new VirtualPadSaturn { Location = new Point(8, 19), Controller = "P1" };
|
||||||
|
var saturnpad2 = new VirtualPadSaturn { Location = new Point(213, 19), Controller = "P2" };
|
||||||
|
_pads.Add(saturnpad1);
|
||||||
|
_pads.Add(saturnpad2);
|
||||||
|
ControllerBox.Controls.Add(saturnpad1);
|
||||||
|
ControllerBox.Controls.Add(saturnpad2);
|
||||||
|
var saturncontrols = new VirtualPadSaturnControl { Location = new Point(8, 125) };
|
||||||
|
_pads.Add(saturncontrols);
|
||||||
|
ControllerBox.Controls.Add(saturncontrols);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Hack for now
|
||||||
|
if (Global.Emulator.SystemId == "C64")
|
||||||
|
{
|
||||||
|
if (Width < 505)
|
||||||
{
|
{
|
||||||
foreach (IVirtualPad v in _pads)
|
Width = 505;
|
||||||
{
|
ControllerBox.Width = Width - 37;
|
||||||
v.Clear();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void StickyBox_CheckedChanged(object sender, EventArgs e)
|
// TODO: multi-player
|
||||||
{
|
|
||||||
Global.Config.VirtualPadSticky = StickyBox.Checked;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void optionsToolStripMenuItem_DropDownOpened(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
saveWindowPositionToolStripMenuItem.Checked = Global.Config.VirtualPadSaveWindowPosition;
|
|
||||||
autolaodToolStripMenuItem.Checked = Global.Config.AutoloadVirtualPad;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void autolaodToolStripMenuItem_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
Global.Config.AutoloadVirtualPad ^= true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void saveWindowPositionToolStripMenuItem_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
Global.Config.VirtualPadSaveWindowPosition ^= true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void clearToolStripMenuItem_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
ClearVirtualPadHolds();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void restoreDefaultSettingsToolStripMenuItem_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
RestoreDefaultSettings();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void RestoreDefaultSettings()
|
|
||||||
{
|
|
||||||
Size = new Size(defaultWidth, defaultHeight);
|
|
||||||
|
|
||||||
Global.Config.VirtualPadSaveWindowPosition = true;
|
|
||||||
Global.Config.VPadHeight = -1;
|
|
||||||
Global.Config.VPadWidth = -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
//TODO: multi-player
|
|
||||||
public void BumpAnalogValue(int? dx, int? dy)
|
public void BumpAnalogValue(int? dx, int? dy)
|
||||||
{
|
{
|
||||||
//TODO: make an analog flag in virtualpads that have it, and check the virtualpads loaded, instead of doing this hardcoded
|
// TODO: make an analog flag in virtualpads that have it, and check the virtualpads loaded, instead of doing this hardcoded
|
||||||
if (Global.Emulator is N64)
|
if (_pads[0] is VirtualPadN64)
|
||||||
{
|
{
|
||||||
(_pads[0] as VirtualPadN64).FudgeAnalog(dx, dy);
|
(_pads[0] as VirtualPadN64).FudgeAnalog(dx, dy);
|
||||||
|
|
||||||
|
@ -391,16 +341,87 @@ namespace BizHawk.Client.EmuHawk
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void alwaysOnTopToolStripMenuItem_Click(object sender, EventArgs e)
|
private void RefreshFloatingWindowControl()
|
||||||
{
|
{
|
||||||
alwaysOnTopToolStripMenuItem.Checked = alwaysOnTopToolStripMenuItem.Checked == false;
|
Owner = Global.Config.VirtualPadSettings.FloatingWindow ? null : GlobalWin.MainForm;
|
||||||
TopMost = alwaysOnTopToolStripMenuItem.Checked;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void button1_Click(object sender, EventArgs e)
|
#region Events
|
||||||
|
|
||||||
|
#region Menu
|
||||||
|
|
||||||
|
private void OptionsSubMenu_DropDownOpened(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
AutoloadMenuItem.Checked = Global.Config.AutoloadVirtualPad;
|
||||||
|
SaveWindowPositionMenuItem.Checked = Global.Config.VirtualPadSettings.SaveWindowPosition;
|
||||||
|
AlwaysOnTopMenuItem.Checked = Global.Config.VirtualPadSettings.TopMost;
|
||||||
|
FloatingWindowMenuItem.Checked = Global.Config.VirtualPadSettings.FloatingWindow;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void AutoloadMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Global.Config.AutoloadVirtualPad ^= true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SaveWindowPositionMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Global.Config.VirtualPadSettings.SaveWindowPosition ^= true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void AlwaysOnTopMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Global.Config.VirtualPadSettings.TopMost ^= true;
|
||||||
|
TopMost = Global.Config.VirtualPadSettings.TopMost;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void FloatingWindowMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Global.Config.VirtualPadSettings.FloatingWindow ^= true;
|
||||||
|
RefreshFloatingWindowControl();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void RestoreDefaultSettingsMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Size = new Size(_defaultWidth, _defaultHeight);
|
||||||
|
|
||||||
|
Global.Config.VirtualPadSettings.SaveWindowPosition = true;
|
||||||
|
Global.Config.VirtualPadSettings.TopMost = TopMost = false;
|
||||||
|
Global.Config.VirtualPadSettings.FloatingWindow = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ExitMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Close();
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Dialog, Controls, Context Menu
|
||||||
|
|
||||||
|
protected override void OnClosed(EventArgs e)
|
||||||
|
{
|
||||||
|
Global.StickyXORAdapter.ClearStickies();
|
||||||
|
Global.StickyXORAdapter.ClearStickyFloats();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ClearMenuItem_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
ClearVirtualPadHolds();
|
ClearVirtualPadHolds();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void StickyBox_CheckedChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Global.Config.VirtualPadSticky = StickyBox.Checked;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void OnShown(EventArgs e)
|
||||||
|
{
|
||||||
|
RefreshFloatingWindowControl();
|
||||||
|
base.OnShown(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue