{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE TemplateHaskell #-} module Data.Aeson.TickLeiste ( JSONRequest (..), JSONEvent (..), ) where import Data.Aeson import Data.Aeson.TH import qualified Data.Text as T import Data.TickLeiste import qualified Data.UUID as U $(deriveJSON defaultOptions {sumEncoding = defaultTaggedObject {tagFieldName = "tickType", contentsFieldName = "tickValue"}} ''Tick) data JSONRequest = SetPlayerTickR {sptRplayerUUID :: U.UUID, sptRtick :: Tick} | AddPladerTickR {aptRplayerName :: T.Text, aptRtick :: Tick} | InitializeTickLeisteR {itlRtickLeiste :: [(Tick, [T.Text])]} | TickLeisteR | ChangeNameR {cnaRplayerUUID :: U.UUID, cnaRplayerName :: T.Text} | RemovePlayerR {rmpRplayerUUID :: U.UUID} deriving (Show) $(deriveJSON defaultOptions {sumEncoding = defaultTaggedObject {tagFieldName = "requestType"}, fieldLabelModifier = drop 4} ''JSONRequest) data JSONEvent = SetPlayerTickE {sptEplayerUUID :: U.UUID, sptEtick :: Tick} | InitializeTickLeisteE {itlEtickLeiste :: [(Tick, [(U.UUID, T.Text)])]} | ChangeNameE {cnaEplayerUUID :: U.UUID, cnaEplayerName :: T.Text} | RemovePlayerE {rmpEplayerUUID :: U.UUID} deriving (Show) $(deriveJSON defaultOptions {sumEncoding = defaultTaggedObject {tagFieldName = "eventType"}, fieldLabelModifier = drop 4} ''JSONEvent)