/// <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); } }
/// <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 }
/// <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; } }