module EventLoop.Output.SystemMessage(SystemMessageOut(..), TimeData(..)) where
import EventLoop.Json
import EventLoop.Config
import EventLoop.CommonTypes
data SystemMessageOut = CanvasSetup Dimension
| Timer TimeData
| Close
data TimeData = On Int
| Off
instance JSONAble SystemMessageOut where
toJsonMessage (CanvasSetup dim) = JSONObject [(JSONMember sysmessageanswerS (JSONString canvassetupS)), (JSONMember dimensionS (dimensionToJsonMessage dim))]
toJsonMessage (Timer timedata) = JSONObject [(JSONMember sysmessageanswerS (JSONString timerS)), (JSONMember timedataS (toJsonMessage timedata))]
toJsonMessage (Close) = JSONObject [(JSONMember sysmessageanswerS (JSONString closeS))]
dimensionToJsonMessage :: Dimension -> JSONMessage
dimensionToJsonMessage (w, h) = JSONObject [(JSONMember hS (JSONFloat h)), (JSONMember wS (JSONFloat w))]
instance JSONAble TimeData where
toJsonMessage Off = JSONObject [(JSONMember useS (JSONBool False))]
toJsonMessage (On i) = JSONObject [(JSONMember useS (JSONBool True)), (JSONMember iS (JSONFloat $ fromIntegral i))]