module Affection.MessageBus.Message.WindowMessage where import Affection.MessageBus.Message.Class import Data.Int (Int32(..)) import qualified SDL import Linear (V2(..)) data WindowMessage -- = MsgEngineReady Double = MsgWindowShow { msgWSWhen :: Double , msgWSWindow :: SDL.Window } | MsgWindowHide { msgWHWhen :: Double , msgWHWindow :: SDL.Window } | MsgWindowExpose { msgWEWhen :: Double , msgWEWindow :: SDL.Window } | MsgWindowMove { msgWMWhen :: Double , msgWMWindow :: SDL.Window , msgWMNewPos :: V2 Int32 } | MsgWindowResize { msgWRWhen :: Double , msgWRWindow :: SDL.Window , msgWRNewSize :: V2 Int32 } | MsgWindowSizeChange { msgWSCWhen :: Double , msgWSCWindow :: SDL.Window } | MsgWindowMinimize { msgWMinWhen :: Double , msgWMinWindow :: SDL.Window } | MsgWindowMaximize { msgWMaxWhen :: Double , msgWMaxWindow :: SDL.Window } | MsgWindowRestore { msgWRestWhen :: Double , msgWRestWindow :: SDL.Window } | MsgWindowGainMouseFocus { msgWGMFWhen :: Double , msgWGMFWindow :: SDL.Window } | MsgWindowLoseMouseFocus { msgWLMFWhen :: Double , msgWLMFWindow :: SDL.Window } | MsgWindowGainKeyboardFocus { msgWGKFWhen :: Double , msgWGKFWindow :: SDL.Window } | MsgWindowLoseKeyboardFocus { msgWLKFWhen :: Double , msgWLKFWindow :: SDL.Window } | MsgWindowClose { msgWCWhen :: Double , msgWCWindow :: SDL.Window } | MsgWindowEmptyEvent deriving (Show) instance Message WindowMessage where -- msgTime (MsgEngineReady t) = t msgTime (MsgWindowShow t _) = t msgTime (MsgWindowHide t _) = t msgTime (MsgWindowExpose t _) = t msgTime (MsgWindowMove t _ _) = t msgTime (MsgWindowResize t _ _) = t msgTime (MsgWindowSizeChange t _) = t msgTime (MsgWindowMinimize t _) = t msgTime (MsgWindowMaximize t _) = t msgTime (MsgWindowRestore t _) = t msgTime (MsgWindowGainMouseFocus t _) = t msgTime (MsgWindowLoseMouseFocus t _) = t msgTime (MsgWindowGainKeyboardFocus t _) = t msgTime (MsgWindowLoseKeyboardFocus t _) = t msgTime (MsgWindowClose t _) = t