New way of doing hotkey logic in mainform, only 3 hotkeys are converted to this way because I got bored

This commit is contained in:
adelikat 2013-12-27 16:23:12 +00:00
parent 9d8945160c
commit 4ea95ac94e
3 changed files with 51 additions and 8 deletions

View File

@ -368,6 +368,7 @@
<Compile Include="DisplayManager\Filters\Hq2x.cs" /> <Compile Include="DisplayManager\Filters\Hq2x.cs" />
<Compile Include="DisplayManager\Filters\Scanlines.cs" /> <Compile Include="DisplayManager\Filters\Scanlines.cs" />
<Compile Include="GlobalWin.cs" /> <Compile Include="GlobalWin.cs" />
<Compile Include="HotkeyActions.cs" />
<Compile Include="Input\GamePad.cs" Condition=" '$(OS)' == 'Windows_NT' " /> <Compile Include="Input\GamePad.cs" Condition=" '$(OS)' == 'Windows_NT' " />
<Compile Include="Input\GamePad360.cs" /> <Compile Include="Input\GamePad360.cs" />
<Compile Include="Input\Input.cs" /> <Compile Include="Input\Input.cs" />

View File

@ -0,0 +1,35 @@
using System;
using System.Collections.Generic;
namespace BizHawk.Client.EmuHawk
{
public class HotkeyActions
{
private MainForm _mf;
private Dictionary<string, Action> _hotkeys = new Dictionary<string, Action>();
public HotkeyActions(MainForm mf)
{
_mf = mf;
_hotkeys = new System.Collections.Generic.Dictionary<string,Action>
{
{ "Pause", _mf.TogglePause },
{ "Soft Reset", _mf.SoftReset },
{ "Hard Reset", _mf.HardReset },
{ "Clear Autohold", _mf.ClearAutohold },
};
}
public bool CheckHotkey(string key)
{
if (_hotkeys.ContainsKey(key))
{
_hotkeys[key]();
return true;
}
return false;
}
}
}

View File

@ -47,6 +47,7 @@ namespace BizHawk.Client.EmuHawk
public MainForm(string[] args) public MainForm(string[] args)
{ {
GlobalWin.MainForm = this; GlobalWin.MainForm = this;
_hotkeys = new HotkeyActions(this);
Global.Rewinder = new Rewinder() Global.Rewinder = new Rewinder()
{ {
MessageCallback = GlobalWin.OSD.AddMessage MessageCallback = GlobalWin.OSD.AddMessage
@ -60,6 +61,7 @@ namespace BizHawk.Client.EmuHawk
MessageCallback = GlobalWin.OSD.AddMessage, MessageCallback = GlobalWin.OSD.AddMessage,
AskYesNoCallback = StateErrorAskUser AskYesNoCallback = StateErrorAskUser
}; };
_mainWait = new AutoResetEvent(false); _mainWait = new AutoResetEvent(false);
Icon = Properties.Resources.logo; Icon = Properties.Resources.logo;
InitializeComponent(); InitializeComponent();
@ -956,6 +958,8 @@ namespace BizHawk.Client.EmuHawk
private RetainedViewportPanel captureosd_rvp; private RetainedViewportPanel captureosd_rvp;
private SysdrawingRenderPanel captureosd_srp; private SysdrawingRenderPanel captureosd_srp;
private HotkeyActions _hotkeys;
#endregion #endregion
#region Private methods #region Private methods
@ -974,7 +978,7 @@ namespace BizHawk.Client.EmuHawk
HandleToggleLight(); HandleToggleLight();
} }
private static void ClearAutohold() public void ClearAutohold()
{ {
Global.StickyXORAdapter.ClearStickies(); Global.StickyXORAdapter.ClearStickies();
Global.AutofireStickyXORAdapter.ClearStickies(); Global.AutofireStickyXORAdapter.ClearStickies();
@ -989,21 +993,24 @@ namespace BizHawk.Client.EmuHawk
private bool CheckHotkey(string trigger) private bool CheckHotkey(string trigger)
{ {
// todo - could have these in a table somehow ? var result = _hotkeys.CheckHotkey(trigger);
if (result)
{
return true;
}
// If Item wasn't in the list, use the legacy switch
switch (trigger) switch (trigger)
{ {
default: default:
return false; return false;
case "Pause": TogglePause(); break;
case "Toggle Throttle": case "Toggle Throttle":
_unthrottled ^= true; _unthrottled ^= true;
GlobalWin.OSD.AddMessage("Unthrottled: " + _unthrottled); GlobalWin.OSD.AddMessage("Unthrottled: " + _unthrottled);
break; break;
case "Soft Reset": SoftReset(); break;
case "Hard Reset": HardReset(); break;
case "Quick Load": LoadState("QuickSave" + Global.Config.SaveSlot); break; case "Quick Load": LoadState("QuickSave" + Global.Config.SaveSlot); break;
case "Quick Save": SaveState("QuickSave" + Global.Config.SaveSlot); break; case "Quick Save": SaveState("QuickSave" + Global.Config.SaveSlot); break;
case "Clear Autohold": ClearAutohold(); break;
case "Screenshot": TakeScreenshot(); break; case "Screenshot": TakeScreenshot(); break;
case "Full Screen": ToggleFullscreen(); break; case "Full Screen": ToggleFullscreen(); break;
case "Open ROM": OpenRom(); break; case "Open ROM": OpenRom(); break;
@ -2004,7 +2011,7 @@ namespace BizHawk.Client.EmuHawk
GlobalWin.OSD.AddMessage("Volume " + Global.Config.SoundVolume); GlobalWin.OSD.AddMessage("Volume " + Global.Config.SoundVolume);
} }
private static void SoftReset() public void SoftReset()
{ {
// is it enough to run this for one frame? maybe.. // is it enough to run this for one frame? maybe..
if (Global.Emulator.ControllerDefinition.BoolButtons.Contains("Reset")) if (Global.Emulator.ControllerDefinition.BoolButtons.Contains("Reset"))
@ -2017,7 +2024,7 @@ namespace BizHawk.Client.EmuHawk
} }
} }
private static void HardReset() public void HardReset()
{ {
// is it enough to run this for one frame? maybe.. // is it enough to run this for one frame? maybe..
if (Global.Emulator.ControllerDefinition.BoolButtons.Contains("Power")) if (Global.Emulator.ControllerDefinition.BoolButtons.Contains("Power"))