示例#1
0
        /// <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);
        }
示例#2
0
        /// <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);
        }
示例#3
0
        /// <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);
        }