コード例 #1
0
        /// <summary>
        /// Handles a message sent to this component.
        /// </summary>
        /// <param name="message">Message to be handled</param>
        /// <returns>True, if handled, otherwise false</returns>
        /// <exception cref="ArgumentException">Thrown if a <see cref="MessageType"/> is not handled properly."/></exception>
        public override bool ExecuteMessage(IMessage message)
        {
            switch (message.Type)
            {
            case MessageType.MouseScroll:
            {
                MsgMouseScroll scrollWheelMessage = message as MsgMouseScroll;
                message.TypeCheck(scrollWheelMessage);

                HandleMouseScroll(scrollWheelMessage.ScrollWheelDelta);
            }
                return(true);

            case MessageType.MouseMove:
            {
                MsgMouseMove moveMessage = message as MsgMouseMove;
                message.TypeCheck(moveMessage);

                HandleMouseMove(moveMessage.PositionDelta);
            }
                return(true);

            default:
                return(false);
            }
        }
コード例 #2
0
        /// <summary>
        /// Handles a message sent to this component.
        /// </summary>
        /// <param name="message">Message to be handled</param>
        /// <returns>True, if handled, otherwise false</returns>
        /// <exception cref="ArgumentException">Thrown if a <see cref="MessageType"/> is not handled properly."/></exception>
        public override bool ExecuteMessage(IMessage message)
        {
#if WINDOWS
            switch (message.Type)
            {
            case MessageType.MouseDown:
            {
                MsgMouseButtonPressed mouseDownMessage = message as MsgMouseButtonPressed;
                message.TypeCheck(mouseDownMessage);

                if (mouseDownMessage.Button == MouseButton.Left)
                {
                    this.speed *= this.turboSpeedModifier;
                }
            }
                return(true);

            case MessageType.MouseUp:
            {
                MsgMouseButtonReleased mouseUpMessage = message as MsgMouseButtonReleased;
                message.TypeCheck(mouseUpMessage);

                if (mouseUpMessage.Button == MouseButton.Left)
                {
                    this.speed *= (1.0f / this.turboSpeedModifier);
                }
            }
                return(true);

            case MessageType.MouseScroll:
            {
                MsgMouseScroll scrollWheelMessage = message as MsgMouseScroll;
                message.TypeCheck(scrollWheelMessage);

                HandleMouseScroll(scrollWheelMessage.ScrollWheelDelta);
            }
                return(true);

            case MessageType.MouseMove:
            {
                MsgMouseMove moveMessage = message as MsgMouseMove;
                message.TypeCheck(moveMessage);

                HandleMouseMove(moveMessage.PositionDelta);
            }
                return(true);

            default:
                return(false);
            }
#else //!WINDOWS
            return(false);
#endif //!WINDOWS
        }
コード例 #3
0
        /// <summary>
        /// Validates the mouse scroll value and sends a <see cref="Message<int>"/> if changed
        /// </summary>
        /// <param name="state">Current <see cref="MouseState"/></param>
        private void ValidateScroll(MouseState state)
        {
            if (state.ScrollWheelValue != this.lastScrollValue)
            {
                MsgMouseScroll scrollMessage = ObjectPool.Aquire <MsgMouseScroll>();
                scrollMessage.ScrollWheelDelta = state.ScrollWheelValue - this.lastScrollValue;
                scrollMessage.Time             = this.gameTime;
                scrollMessage.Type             = MessageType.MouseScroll;
                this.Game.SendMessage(scrollMessage);

                this.lastScrollValue = state.ScrollWheelValue;
            }
        }