using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Windows.Input;
namespace Base
{
public class Input
{
[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
private static extern short GetKeyState(int keyCode);
///
/// Check whether the Key is pressed
///
/// Key to check
/// Whether the key is pressed
public static bool IsKeyDown(Keys key)
{
try
{
int state = 0;
short retVal = GetKeyState((int)key);
if ((retVal & 0x8000) == 0x8000)
state |= 1;
if ((retVal & 1) == 1)
state |= 2;
return 1 == (state & 1);
}
catch (Exception e1)
{
Console.WriteLine("Invader: IsKeyDown failed:\r\n" + e1.ToString());
return false;
}
}
///
/// Unified input for going up
///
public static bool Up => IsKeyDown(Keys.Up) || IsKeyDown(Keys.W);
///
/// Unified input for going left
///
public static bool Left => IsKeyDown(Keys.Left) || IsKeyDown(Keys.A);
///
/// Unified input for going down
///
public static bool Down => IsKeyDown(Keys.Down) || IsKeyDown(Keys.S);
///
/// Unified input for going right
///
public static bool Right => IsKeyDown(Keys.Right) || IsKeyDown(Keys.D);
///
/// Unified input for doing something
///
public static bool Action => IsKeyDown(Keys.Space) || IsKeyDown(Keys.Q) || IsKeyDown(Keys.E);
}
}