server/src/Session.hs

36 lines
657 B
Haskell
Raw Normal View History

2018-04-11 13:25:24 +02:00
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE MultiParamTypeClasses #-}
2018-04-11 13:25:24 +02:00
module Session (
Status(..)
2018-04-11 13:25:24 +02:00
, T(..)
, Update
, open
2018-04-11 13:25:24 +02:00
) where
import Network.WebSockets (Connection)
import Hanafuda.KoiKoi (GameID, PlayerID)
import qualified Data (RW(..))
data Status =
LoggedIn Bool
| Answering PlayerID
| Waiting PlayerID
| Playing GameID
deriving (Show)
2018-04-11 13:25:24 +02:00
data T = T {
connection :: Connection
, status :: Status
2018-04-11 13:25:24 +02:00
}
type Update = T -> T
2018-04-11 13:25:24 +02:00
instance Data.RW Status T where
get = status
set status session = session {status}
2018-04-11 13:25:24 +02:00
open :: Connection -> T
open connection = T {
connection
, status = LoggedIn False
}