コード例 #1
0
ファイル: InputManager.cs プロジェクト: DrPandemic/EraParadox
 /// <summary>
 /// Determines if an action was fired on during since last drop call.
 /// </summary>
 /// <returns><c>true</c>, if the event happend, <c>false</c> otherwise.</returns>
 /// <param name="action">Action.</param>
 public bool IsActionFired(InputActions action)
 {
     return(ActionsFired.Contains(action));
 }
コード例 #2
0
ファイル: InputManager.cs プロジェクト: DrPandemic/EraParadox
        protected void OnUpdate()
        {
            ActionsFired.Clear();
            KeyboardState keyboardState = Keyboard.GetState();
            MouseState    mouseState    = Mouse.GetState();

            foreach (KeyValuePair <InputActions, InputState> action in Inputs.Info)
            {
                // Manage mouse events.
                if (!action.Value.IsKeyboard && action.Value.MouseKey != MouseKeys.None)
                {
                    if (CheckMouseState(keyboardState, mouseState, action.Value))
                    {
                        if (InputEvents.ContainsKey(action.Key))
                        {
                            InputEvents[action.Key](this, new InputEventArgs()
                            {
                                MousePosition = MousePosition
                            });
                        }
                        ActionsFired.Add(action.Key);
                    }
                }
                else if (action.Value.KeyboardKey != Keys.None)
                {
                    switch (action.Value.State)
                    {
                    // The type of key state.
                    case KeyState.Up:
                        // Makes sure it is in the good state.
                        if (keyboardState.IsKeyUp(action.Value.KeyboardKey) && (!action.Value.Sensitive || CheckDeadKey(keyboardState, action.Value.DeadKey)))
                        {
                            if (InputEvents.ContainsKey(action.Key))
                            {
                                InputEvents[action.Key](this, new InputEventArgs());
                            }
                            // Adds it to the list to be able to query all event fired in this frame.
                            ActionsFired.Add(action.Key);
                        }
                        break;

                    case KeyState.Down:
                        if (keyboardState.IsKeyDown(action.Value.KeyboardKey) && (!action.Value.Sensitive || CheckDeadKey(keyboardState, action.Value.DeadKey)))
                        {
                            if (InputEvents.ContainsKey(action.Key))
                            {
                                InputEvents[action.Key](this, new InputEventArgs());
                            }
                            ActionsFired.Add(action.Key);
                        }
                        break;

                    case KeyState.Pressed:
                        if (keyboardState.IsKeyDown(action.Value.KeyboardKey) && OldKeyboard.IsKeyUp(action.Value.KeyboardKey) &&
                            (!action.Value.Sensitive || CheckDeadKey(keyboardState, action.Value.DeadKey)))
                        {
                            if (InputEvents.ContainsKey(action.Key))
                            {
                                InputEvents[action.Key](this, new InputEventArgs());
                            }
                            ActionsFired.Add(action.Key);
                        }
                        break;

                    case KeyState.Released:
                        if (keyboardState.IsKeyUp(action.Value.KeyboardKey) && OldKeyboard.IsKeyDown(action.Value.KeyboardKey) &&
                            (!action.Value.Sensitive || CheckDeadKey(keyboardState, action.Value.DeadKey)))
                        {
                            if (InputEvents.ContainsKey(action.Key))
                            {
                                InputEvents[action.Key](this, new InputEventArgs());
                            }
                            ActionsFired.Add(action.Key);
                        }
                        break;
                    }
                }
            }
            OldKeyboard = keyboardState;
            OldMouse    = mouseState;

            if (IsWindowReady && IsActive)
            {
                Cursor.Position = MousePosition;
            }
        }