module Affection.MessageBus.Message.MouseMessage where import Affection.MessageBus.Message.Class import Data.Word (Word8(..)) import Data.Int (Int32(..)) import qualified SDL import Linear (V2(..)) data MouseMessage = MsgMouseMotion { msgMMWhen :: Double , msgMMWindow :: Maybe SDL.Window , msgMMWhich :: SDL.MouseDevice , msgMMState :: [SDL.MouseButton] , msgMMPos :: V2 Int32 , msgMMRelMotion :: V2 Int32 } | MsgMouseButton { msgMBWhen :: Double , msgMBWindow :: Maybe SDL.Window , msgMBWhich :: SDL.MouseDevice , msgMBButton :: SDL.MouseButton , msgMBClicks :: Word8 , msgMBPos :: V2 Int32 } | MsgMouseWheel { msgMWWhen :: Double , msgMWWhindow :: Maybe SDL.Window , msgMWWhich :: SDL.MouseDevice , msgMWPos :: V2 Int32 , msgMWDIrection :: SDL.MouseScrollDirection } | MsgMouseEmptyEvent deriving (Show) instance Message MouseMessage where msgTime (MsgMouseMotion t _ _ _ _ _) = t msgTime (MsgMouseButton t _ _ _ _ _) = t msgTime (MsgMouseWheel t _ _ _ _) = t