Ejemplo n.º 1
0
        private void DoKeyboardEvents(GameTime gameTime)
        {
            // TODO: Put all keyboard checks in here

            if (Keyboard.GetState().GetPressedKeys().Length < 1)
            {
                lastKeyHash = -1;
            }

            if (FocusedTextbox != No_Focused_Textbox)
            {
                if ((gameTime.TotalGameTime.TotalMilliseconds > TimeOfLastKeyPress + 5 && lastKeyPress.GetHashCode() != Keyboard.GetState().GetHashCode()) || (gameTime.TotalGameTime.TotalMilliseconds > TimeOfLastKeyPress + 1050 && lastKeyPress.GetHashCode() == Keyboard.GetState().GetHashCode()))
                {
                    lastKeyPress = Keyboard.GetState();
                    Keys[] pressedKeys = Keyboard.GetState().GetPressedKeys();
                    if (pressedKeys.Length > 0 && lastKeyHash != pressedKeys[0].GetHashCode())
                    {
                        if (pressedKeys[0] == Keys.Back)
                        {
                            string tmpText = GetTextboxByID(FocusedTextbox).Text;
                            if (tmpText.Length > 0)
                            {
                                GetTextboxByID(FocusedTextbox).Text = tmpText.Substring(0, tmpText.Length - 1);
                            }
                        }
                        /*else if(pressedKeys[i] == Keys.Space)
                        {
                            GetTextboxByID(FocusedTextbox).Text += " ";
                        }*/
                        else
                        {
                            if (GetTextboxByID(FocusedTextbox).Text.Length < GetTextboxByID(FocusedTextbox).MaxChars)
                            {
                                if ((pressedKeys[0].GetHashCode() > 95 && pressedKeys[0].GetHashCode() < 106))
                                {
                                    GetTextboxByID(FocusedTextbox).Text += pressedKeys[0].ToString().Substring(6);
                                }
                                else if ((pressedKeys[0].GetHashCode() > 47 && pressedKeys[0].GetHashCode() < 58))
                                {
                                    GetTextboxByID(FocusedTextbox).Text += pressedKeys[0].ToString().Substring(1);
                                }
                            }
                            lastKeyHash = pressedKeys[0].GetHashCode();
                        }
                        TimeOfLastKeyPress = (int)gameTime.TotalGameTime.TotalMilliseconds;
                    }
                }
                else if (gameTime.TotalGameTime.TotalMilliseconds > TimeOfLastKeyPress + 450 && lastKeyPress.GetHashCode() == Keyboard.GetState().GetHashCode())
                {
                    lastKeyPress = Keyboard.GetState();
                    Keys[] pressedKeys = Keyboard.GetState().GetPressedKeys();
                    if (pressedKeys.Length > 0)
                    {
                        if (pressedKeys[0] == Keys.Back)
                        {
                            string tmpText = GetTextboxByID(FocusedTextbox).Text;
                            if (tmpText.Length > 0)
                            {
                                GetTextboxByID(FocusedTextbox).Text = tmpText.Substring(0, tmpText.Length - 1);
                            }
                        }
                        //else if(pressedKeys[i] == Keys.Space)
                        //{
                        //    GetTextboxByID(FocusedTextbox).Text += " ";
                        //}
                        else
                        {
                            if (GetTextboxByID(FocusedTextbox).Text.Length < GetTextboxByID(FocusedTextbox).MaxChars)
                            {
                                if ((pressedKeys[0].GetHashCode() > 95 && pressedKeys[0].GetHashCode() < 106))
                                {
                                    GetTextboxByID(FocusedTextbox).Text += pressedKeys[0].ToString().Substring(6);
                                }
                                else if ((pressedKeys[0].GetHashCode() > 47 && pressedKeys[0].GetHashCode() < 58))
                                {
                                    GetTextboxByID(FocusedTextbox).Text += pressedKeys[0].ToString().Substring(1);
                                }
                            }
                        }
                        lastKeyHash = pressedKeys[0].GetHashCode();
                    }
                    if (lastKeyPress.GetHashCode() != Keyboard.GetState().GetHashCode())
                        TimeOfLastKeyPress = (int)gameTime.TotalGameTime.TotalMilliseconds;
                }
            }

            if (gameTime.TotalGameTime.TotalMilliseconds - TimeOfLastMovement > 250)
            {
                if (this.IsActive)
                {
                    if (Keyboard.GetState().IsKeyDown(Keys.Right))
                    {
                        if (!OutOfBoundaries(new Coordinates(CurrentPosition.X + 1, CurrentPosition.Y)))
                        {
                            CurrentPosition = new Coordinates(CurrentPosition.X + 1, CurrentPosition.Y);
                            TimeOfLastMovement = (int)gameTime.TotalGameTime.TotalMilliseconds;
                        }
                    }
                    else if (Keyboard.GetState().IsKeyDown(Keys.Left))
                    {
                        if (!OutOfBoundaries(new Coordinates(CurrentPosition.X - 1, CurrentPosition.Y)))
                        {
                            CurrentPosition = new Coordinates(CurrentPosition.X - 1, CurrentPosition.Y);
                            TimeOfLastMovement = (int)gameTime.TotalGameTime.TotalMilliseconds;
                        }
                    }
                    else if (Keyboard.GetState().IsKeyDown(Keys.Up))
                    {
                        if (!OutOfBoundaries(new Coordinates(CurrentPosition.X, CurrentPosition.Y - 1)))
                        {
                            CurrentPosition = new Coordinates(CurrentPosition.X, CurrentPosition.Y - 1);
                            TimeOfLastMovement = (int)gameTime.TotalGameTime.TotalMilliseconds;
                        }
                    }
                    else if (Keyboard.GetState().IsKeyDown(Keys.Down))
                    {
                        if (!OutOfBoundaries(new Coordinates(CurrentPosition.X, CurrentPosition.Y + 1)))
                        {
                            CurrentPosition = new Coordinates(CurrentPosition.X, CurrentPosition.Y + 1);
                            TimeOfLastMovement = (int)gameTime.TotalGameTime.TotalMilliseconds;
                        }
                    }
                }
            }
        }
Ejemplo n.º 2
0
        private void Keyboard_Chat(GameTime gameTime)
        {
            if (!lastKeyPress.IsKeyDown(Keys.CapsLock) && Keyboard.GetState().IsKeyDown(Keys.CapsLock))
            {
                CapsLocked = !CapsLocked;
                lastKeyPress = Keyboard.GetState();
            }
            if (FocusedTextbox != No_Focused_Textbox)
            {
                if ((gameTime.TotalGameTime.TotalMilliseconds > TimeOfLastKeyPress && lastKeyPress.GetHashCode() != Keyboard.GetState().GetHashCode()) || (gameTime.TotalGameTime.TotalMilliseconds > TimeOfLastKeyPress + 1050 && lastKeyPress.GetHashCode() == Keyboard.GetState().GetHashCode()))
                {
                    lastKeyPress = Keyboard.GetState();
                    Keys[] pressedKeys = Keyboard.GetState().GetPressedKeys();
                    if (pressedKeys.Length > 0 && lastKeyHash != pressedKeys[0].GetHashCode())
                    {
                        if (pressedKeys[0] == Keys.Back)
                        {
                            string tmpText = GetTextboxByID(FocusedTextbox).Text;
                            if (tmpText.Length > 0)
                            {
                                GetTextboxByID(FocusedTextbox).Text = tmpText.Substring(0, tmpText.Length - 1);
                            }
                        }
                        else if (pressedKeys[0] == Keys.Space)
                        {
                            if ((gameTime.TotalGameTime.TotalMilliseconds > TimeOfLastKeyPress + 100))
                                GetTextboxByID(FocusedTextbox).Text += " ";
                        }
                        else
                        {
                            if (GetTextboxByID(FocusedTextbox).Text.Length < GetTextboxByID(FocusedTextbox).MaxChars)
                            {
                                if ((pressedKeys[0].GetHashCode() > 95 && pressedKeys[0].GetHashCode() < 106))
                                {
                                    GetTextboxByID(FocusedTextbox).Text += pressedKeys[0].ToString().Substring(6);
                                }
                                else if ((pressedKeys[0].GetHashCode() > 47 && pressedKeys[0].GetHashCode() < 58))
                                {
                                    GetTextboxByID(FocusedTextbox).Text += pressedKeys[0].ToString().Substring(1);
                                }
                                else if ((pressedKeys[0].GetHashCode() > 64 && pressedKeys[0].GetHashCode() < 91))
                                {
                                    if (lastKeyPress.IsKeyDown(Keys.LeftShift) || lastKeyPress.IsKeyDown(Keys.RightShift) || CapsLocked)
                                    {
                                        GetTextboxByID(FocusedTextbox).Text += pressedKeys[0].ToString();
                                    }
                                    else
                                    {
                                        GetTextboxByID(FocusedTextbox).Text += pressedKeys[0].ToString().ToLower();
                                    }
                                }
                            }

                            lastKeyHash = pressedKeys[0].GetHashCode();
                        }
                        TimeOfLastKeyPress = (int)gameTime.TotalGameTime.TotalMilliseconds;
                    }
                }
                else if (gameTime.TotalGameTime.TotalMilliseconds > TimeOfLastKeyPress + 450 && lastKeyPress.GetHashCode() == Keyboard.GetState().GetHashCode())
                {
                    lastKeyPress = Keyboard.GetState();
                    Keys[] pressedKeys = Keyboard.GetState().GetPressedKeys();
                    if (pressedKeys.Length > 0)
                    {
                        if (pressedKeys[0] == Keys.Back)
                        {
                            string tmpText = GetTextboxByID(FocusedTextbox).Text;
                            if (tmpText.Length > 0)
                            {
                                GetTextboxByID(FocusedTextbox).Text = tmpText.Substring(0, tmpText.Length - 1);
                            }
                        }
                        else if (pressedKeys[0] == Keys.Space)
                        {
                            GetTextboxByID(FocusedTextbox).Text += " ";
                        }
                        else
                        {
                            if (GetTextboxByID(FocusedTextbox).Text.Length < GetTextboxByID(FocusedTextbox).MaxChars)
                            {
                                if ((pressedKeys[0].GetHashCode() > 95 && pressedKeys[0].GetHashCode() < 106))
                                {
                                    GetTextboxByID(FocusedTextbox).Text += pressedKeys[0].ToString().Substring(6);
                                }
                                else if ((pressedKeys[0].GetHashCode() > 47 && pressedKeys[0].GetHashCode() < 58))
                                {
                                    GetTextboxByID(FocusedTextbox).Text += pressedKeys[0].ToString().Substring(1);
                                }
                                else if ((pressedKeys[0].GetHashCode() > 64 && pressedKeys[0].GetHashCode() < 91))
                                {
                                    if (lastKeyPress.IsKeyDown(Keys.LeftShift) || lastKeyPress.IsKeyDown(Keys.RightShift) || CapsLocked)
                                    {
                                        GetTextboxByID(FocusedTextbox).Text += pressedKeys[0].ToString();
                                    }
                                    else
                                    {
                                        GetTextboxByID(FocusedTextbox).Text += pressedKeys[0].ToString().ToLower();
                                    }
                                }
                            }
                        }
                        lastKeyHash = pressedKeys[0].GetHashCode();
                    }
                    if (lastKeyPress.GetHashCode() != Keyboard.GetState().GetHashCode())
                        TimeOfLastKeyPress = (int)gameTime.TotalGameTime.TotalMilliseconds;
                }
            }
        }