Exemplo n.º 1
0
        /// <summary>
        /// opens/closes Inventory
        /// </summary>
        private void ToggleInventory()
        {
            InventoryToggledEvent?.Invoke();

            if (UI.InventoryOpen)
            {
                EnterDomain(CommandDomain.Inventory);
            }
            else
            {
                LeaveCurrentDomain();
            }
        }
Exemplo n.º 2
0
        public void Run(GameTime gameTime)
        {
            KeyboardState keyboard = Keyboard.GetState();

            Keys[] keysPressed = keyboard.GetPressedKeys();


            if (keysPressed.Length == 0)
            {
                lastInput = Keys.None;
                return;
            }

            if (keysPressed.Any(item => item == lastInput))
            {
                sameKeyHeldFor += gameTime.ElapsedGameTime.Milliseconds;

                if (sameKeyHeldFor < 500)
                {
                    return;
                }
            }
            else
            {
                sameKeyHeldFor = 0;
            }

            // check if player was just prompted for input
            if (promptKeys != null)
            {
                for (int i = 0; i < promptKeys.Length; i++)
                {
                    if (keysPressed.Contains(promptKeys[i]))
                    {
                        promptKeys = null;
                        callback.Invoke(i);
                        break;
                    }
                }
                // don't check for normal input until prompt is resolved
                return;
            }

            // check for general input
            if (keysPressed.Any(item => item == Keys.Up))
            {
                lastInput = Keys.Up;
                RaiseMovementEvent(controlledEntity, Direction.North);
            }
            else if (keysPressed.Any(item => item == Keys.Right))
            {
                lastInput = Keys.Right;
                RaiseMovementEvent(controlledEntity, Direction.East);
            }
            else if (keysPressed.Any(item => item == Keys.Down))
            {
                lastInput = Keys.Down;
                RaiseMovementEvent(controlledEntity, Direction.South);
            }
            else if (keysPressed.Any(item => item == Keys.Left))
            {
                lastInput = Keys.Left;
                RaiseMovementEvent(controlledEntity, Direction.West);
            }
            else if (keysPressed.Contains(Keys.Space))
            {
                HandleSpacePressed();
                lastInput = Keys.Space;
            }
            else if (keysPressed.Contains(Keys.I))
            {
                InventoryToggledEvent?.Invoke();
                lastInput = Keys.I;
            }
            else if (keysPressed.Contains(Keys.X))
            {
                ToggleTargetMode();
                lastInput = Keys.X;
            }
            else if (keysPressed.Contains(Keys.Enter))
            {
                HandlePlayerConfirmation();
                lastInput = Keys.Enter;
            }
        }