public override void Update(GameTime gameTime) { KeyboardState currState = Keyboard.GetState(); if (!IgnoreInput && Character.State == CharacterActionState.Standing && !Character.PreparingSpell) { UpdateInputTime(); //F1-F8 should be handled the same way: invoke the spell for (int key = (int)Keys.F1; key <= (int)Keys.F8; ++key) { if (currState.IsKeyHeld(PreviousKeyState, (Keys)key)) { //hidden feature! holding shift calls spell in second row (just learned that, crazy!!!!) var shiftHeld = currState.IsKeyHeld(PreviousKeyState, Keys.LeftShift) || currState.IsKeyHeld(PreviousKeyState, Keys.RightShift) ? OldActiveSpells.SPELL_ROW_LENGTH : 0; _handleSpellFunc(key - (int)Keys.F1 + shiftHeld); break; } } } if (currState.IsKeyPressedOnce(PreviousKeyState, Keys.F12)) { _handleF12(); } base.Update(gameTime); }