/// <summary> /// Updates the current mouse/keyboard states. /// </summary> public static void Update() { PreviousMouseState = CurrentMouseState; PreviousKeyboardState = CurrentKeyboardState; CurrentMouseState = Microsoft.Xna.Framework.Input.Mouse.GetState(); CurrentKeyboardState = Microsoft.Xna.Framework.Input.Keyboard.GetState(); Mouse = new MouseInput(CurrentMouseState, PreviousMouseState); Keyboard = new KeyboardInput(CurrentKeyboardState, PreviousKeyboardState); }
/// <summary> /// Activates the shortcut (if appropriate) based on the given keyboard state. /// </summary> /// <param name="kbd">The keyboard state to test.</param> /// <returns>Whether or not the shortcut was activated.</returns> public bool Handle(KeyboardInput kbd) { if (!IsPressed(kbd)) { return(WasPressed = false); } if (WasPressed) { return(false); } Callback.Invoke(); return(WasPressed = true); }
/// <summary> /// Determine whether the shortcut should be activated based on the provided keyboard state. /// </summary> /// <param name="kbd">The keyboard state to test.</param> /// <returns>Whether or not the shortcut is currently being pressed.</returns> private bool IsPressed(KeyboardInput kbd) { List <Keys> keys = new List <Keys>(kbd.GetPressedKeys()); if (!keys.Remove(ShortcutButtons.Item1)) { return(false); } if (ShortcutButtons.Item2 != Keys.None && !keys.Remove(ShortcutButtons.Item2)) { return(false); } if (ShortcutButtons.Item3 != Keys.None && !keys.Remove(ShortcutButtons.Item3)) { return(false); } if (keys.Count > 0) { return(false); } return(true); }