hastron/src/Hastron/Server/Types.hs

27 lines
891 B
Haskell

{-# LANGUAGE DeriveGeneric #-}
module Hastron.Server.Types where
import Data.Hashable (Hashable)
import Data.HashMap.Strict (HashMap)
-- import qualified Data.HashMap.Strict as Map
import qualified Data.Text as T
import GHC.Generics
import Hastron.Game.Types
data User = User { userName :: T.Text
} deriving (Show, Eq, Ord, Generic)
instance Hashable User
data RoomUserState = RoomUserJoined | RoomUserReady | RoomUserPlaying
deriving (Show, Eq)
data Room = Room { roomGames :: [Game]
, roomUsers :: HashMap User RoomUserState
} deriving (Show, Eq)
data ServerState = ServerState { serverName :: T.Text
, serverUsers :: [User]
, serverRooms :: [Room]
} deriving (Show, Eq)