Exemple #1
0
        public static void Update(bool active)
        {
            Raildriver.Update();
            if (Orts.MultiPlayer.MPManager.IsMultiPlayer() && Orts.MultiPlayer.MPManager.Instance().ComposingText)
            {
                return;
            }

            lastKeyboardState = keyboardState;
            lastMouseState    = mouseState;
            // Make sure we have an "idle" (everything released) keyboard and mouse state if the window isn't active.
            keyboardState = active ? Keyboard.GetState() : emptyKeyboardState;
            mouseState    = active ? Mouse.GetState() : new MouseState(0, 0, lastMouseState.ScrollWheelValue, ButtonState.Released, ButtonState.Released, ButtonState.Released, ButtonState.Released, ButtonState.Released);

            MouseSpeedX = Math.Abs(mouseState.X - lastMouseState.X);
            MouseSpeedY = Math.Abs(mouseState.Y - lastMouseState.Y);

#if DEBUG_RAW_INPUT
            for (Keys key = 0; key <= Keys.OemClear; key++)
            {
                if (lastKeyboardState[key] != keyboardState[key])
                {
                    Console.WriteLine("Keyboard {0} changed to {1}", key, keyboardState[key]);
                }
            }
            if (lastMouseState.LeftButton != mouseState.LeftButton)
            {
                Console.WriteLine("Mouse left button changed to {0}", mouseState.LeftButton);
            }
            if (lastMouseState.MiddleButton != mouseState.MiddleButton)
            {
                Console.WriteLine("Mouse middle button changed to {0}", mouseState.MiddleButton);
            }
            if (lastMouseState.RightButton != mouseState.RightButton)
            {
                Console.WriteLine("Mouse right button changed to {0}", mouseState.RightButton);
            }
            if (lastMouseState.XButton1 != mouseState.XButton1)
            {
                Console.WriteLine("Mouse X1 button changed to {0}", mouseState.XButton1);
            }
            if (lastMouseState.XButton2 != mouseState.XButton2)
            {
                Console.WriteLine("Mouse X2 button changed to {0}", mouseState.XButton2);
            }
            if (lastMouseState.ScrollWheelValue != mouseState.ScrollWheelValue)
            {
                Console.WriteLine("Mouse scrollwheel changed by {0}", mouseState.ScrollWheelValue - lastMouseState.ScrollWheelValue);
            }
#endif
#if DEBUG_INPUT
            var newKeys = GetPressedKeys();
            var oldKeys = GetPreviousPressedKeys();
            foreach (var newKey in newKeys)
            {
                if (!oldKeys.Contains(newKey))
                {
                    Console.WriteLine("Keyboard {0} pressed", newKey);
                }
            }
            foreach (var oldKey in oldKeys)
            {
                if (!newKeys.Contains(oldKey))
                {
                    Console.WriteLine("Keyboard {0} released", oldKey);
                }
            }
            if (IsMouseLeftButtonPressed)
            {
                Console.WriteLine("Mouse left button pressed");
            }
            if (IsMouseLeftButtonReleased)
            {
                Console.WriteLine("Mouse left button released");
            }
            if (IsMouseMiddleButtonPressed)
            {
                Console.WriteLine("Mouse middle button pressed");
            }
            if (IsMouseMiddleButtonReleased)
            {
                Console.WriteLine("Mouse middle button released");
            }
            if (IsMouseRightButtonPressed)
            {
                Console.WriteLine("Mouse right button pressed");
            }
            if (IsMouseRightButtonReleased)
            {
                Console.WriteLine("Mouse right button released");
            }
            if (IsMouseWheelChanged)
            {
                Console.WriteLine("Mouse scrollwheel changed by {0}", MouseWheelChange);
            }
#endif
#if DEBUG_USER_INPUT
            foreach (UserCommand command in Enum.GetValues(typeof(UserCommand)))
            {
                if (UserInput.IsPressed(command))
                {
                    Console.WriteLine("Pressed  {0} - {1}", command, InputSettings.Commands[(int)command]);
                }
                if (UserInput.IsReleased(command))
                {
                    Console.WriteLine("Released {0} - {1}", command, InputSettings.Commands[(int)command]);
                }
            }
#endif
        }