Пример #1
0
        /// <summary>
        /// 接收手柄消息
        /// </summary>
        /// <param name="msg"></param>
        private void OnGamepadMessage(IMessage msg)
        {
            switch (msg.GetMessageType())
            {
            case MessageType.Keyboard:
                MessageKeyboard kb = msg as MessageKeyboard;

                if (kb.State == KeyboardState.KeyDown)
                {
                    keyDownPool.Add(kb.KeyCode);
                    keyPressPool.Add(kb.KeyCode);
                }
                else if (kb.State == KeyboardState.KeyUp)
                {
                    keyUpPool.Add(kb.KeyCode);

                    if (keyPressPool.Contains(kb.KeyCode))
                    {
                        keyPressPool.Remove(kb.KeyCode);
                    }
                }
                break;

            case MessageType.Rocker:
                MessageRocker r = msg as MessageRocker;

                if (r.State == KeyboardState.KeyDown)
                {
                    keyDownPool.Add(r.KeyCode);
                    keyPressPool.Add(r.KeyCode);
                }
                else if (r.State == KeyboardState.KeyUp)
                {
                    keyUpPool.Add(r.KeyCode);

                    if (keyPressPool.Contains(r.KeyCode))
                    {
                        keyPressPool.Remove(r.KeyCode);
                    }
                }

                Rocker rocker;
                if (Rockers.TryGetValue(r.DevID, out rocker))
                {
                    rocker.X = r.Rx;
                    rocker.Y = r.Ry;
                }
                break;

            case MessageType.Gyro:
                MessageGyro g = msg as MessageGyro;

                Gyro gyro;
                if (Gyros.TryGetValue(g.DevID, out gyro))
                {
                    gyro.Gravity          = g.Gravity;
                    gyro.Attitude         = g.Attitude;
                    gyro.RotationRate     = g.RotationRate;
                    gyro.UserAcceleration = g.UserAcceleration;
                }
                break;
            }
        }