blob: 219efb43ce9faa900763ac4a3074df57ef85d3df (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
{-# LANGUAGE TemplateHaskell #-}
module Cafp.Messages
( BlackCard (..)
, WhiteCard (..)
, Cards (..)
, GameView (..)
, ServerMessage (..)
, ClientMessage (..)
) where
import Data.Text (Text)
import Elm.Derive
data BlackCard = BlackCard Int deriving (Show)
data WhiteCard = WhiteCard Int deriving (Show)
data Cards = Cards
{ cardsBlack :: [Text]
, cardsWhite :: [Text]
} deriving (Show)
data GameView = GameView
{ gameViewOpponents :: [Text]
, gameViewMyName :: Text
, gameViewBlackCard :: Maybe BlackCard
, gameViewHand :: [WhiteCard]
} deriving (Show)
data ServerMessage
= Welcome Int
| SyncCards Cards
| SyncGameView GameView
| Bye
deriving (Show)
data ClientMessage
= ChangeMyName Text
deriving (Show)
deriveBoth defaultOptions ''BlackCard
deriveBoth defaultOptions ''WhiteCard
deriveBoth (defaultOptionsDropLower 5) ''Cards
deriveBoth (defaultOptionsDropLower 8) ''GameView
deriveBoth defaultOptions ''ServerMessage
deriveBoth defaultOptions ''ClientMessage
|