/// <summary> /// opens/closes Inventory /// </summary> private void ToggleInventory() { InventoryToggledEvent?.Invoke(); if (UI.InventoryOpen) { EnterDomain(CommandDomain.Inventory); } else { LeaveCurrentDomain(); } }
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; } }