-- | Abstract syntax of client commands. -- See -- . module Game.LambdaHack.Common.Response ( Response(..), CliSerQueue, ChanServer(..) ) where import Prelude () import Game.LambdaHack.Common.Prelude import Control.Concurrent import Game.LambdaHack.Atomic import Game.LambdaHack.Common.Actor import Game.LambdaHack.Common.Request -- | Abstract syntax of client commands for both AI and UI clients. data Response = RespUpdAtomic !UpdAtomic | RespQueryAI !ActorId | RespSfxAtomic !SfxAtomic | RespQueryUI deriving Show type CliSerQueue = MVar -- | Connection channel between the server and a single client. data ChanServer = ChanServer { responseS :: !(CliSerQueue Response) , requestAIS :: !(CliSerQueue RequestAI) , requestUIS :: !(Maybe (CliSerQueue RequestUI)) }