wizard-wipeout/src-lib/Library/Types/Communication.hs
2023-12-23 11:38:57 +01:00

54 lines
930 B
Haskell

{-# LANGUAGE DeriveGeneric #-}
module Library.Types.Communication where
import Data.Aeson
import Data.UUID
import GHC.Generics
-- internal imports
import Library.Types.Player
import Library.Types.Map
data ServerMessage
= ServerQuit
| AcceptClient
{ acClientUUID :: UUID
}
| ProvideInitialWizard
{ initWizard :: Wizard
}
| TickUpdate
{ tuMapSlice :: MapSlice
, tuWizard :: Wizard
}
deriving (Eq, Show, Generic)
instance FromJSON ServerMessage
instance ToJSON ServerMessage
data ClientMessagePayload
= ClientQuit
| ClientRequestWizard
| ClientReady
deriving (Eq, Show, Generic)
data ClientMessage
= ClientMessage
{ cmClientID :: UUID
, cmPayload :: ClientMessagePayload
}
| IdRequest
deriving (Eq, Show, Generic)
instance FromJSON ClientMessagePayload
instance ToJSON ClientMessagePayload
instance FromJSON ClientMessage
instance ToJSON ClientMessage