Ejemplo n.º 1
0
        public void Update(KeyboardHandler keyboard, float elapsedTime)
        {
            if (keyboard.IsKeyDownOnce(Keys.Back) && CurrentText.Length > 0)
            {
                CurrentText = CurrentText.Substring(0, CurrentText.Length - 1);
            }
            else if (CurrentText.Length < MaxInputCharacters)
            {
                var allPressedKeys = keyboard.GetPressedKeys();

                var allValidPressedKeys = allPressedKeys.Where(k => _validCharacterCodes.Contains(k.ToString())).ToArray();
                foreach (var pressedKey in allValidPressedKeys)
                {
                    if (_lastPressedKeys.Contains(pressedKey))
                    {
                        continue;
                    }
                    _lastPressedKeys.Add(pressedKey);

                    var pressed = pressedKey.ToString();

                    if (!IsAnyShiftKeyDown(keyboard))
                    {
                        pressed = pressed.ToLower();
                    }

                    if (pressed.Equals("space"))
                    {
                        pressed = " ";
                    }
                    else if (pressed.Length == 2 && pressed[0] == 'd')
                    {
                        pressed = pressed.Substring(1);
                    }

                    if (InputType == InputType.Numeric && pressed == "d")
                    {
                        break;
                    }

                    if (pressedKey == Keys.OemPeriod)
                    {
                        CurrentText += ".";
                    }
                    else
                    {
                        CurrentText += pressed;
                    }
                }

                _lastPressedKeys.Clear();
                _lastPressedKeys.AddRange(allValidPressedKeys);
            }
        }