diff -r 6af73e7f2438 -r 4e4f88a7bdf2 gameServer/HandlerUtils.hs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gameServer/HandlerUtils.hs Thu May 06 17:39:08 2010 +0000 @@ -0,0 +1,29 @@ +module HandlerUtils where + +import Control.Monad.Reader + +import RoomsAndClients +import CoreTypes +import Actions + +thisClient :: Reader (ClientIndex, IRnC) ClientInfo +thisClient = do + (ci, rnc) <- ask + return $ rnc `client` ci + +clientNick :: Reader (ClientIndex, IRnC) String +clientNick = liftM nick thisClient + +roomOthersChans :: Reader (ClientIndex, IRnC) [ClientChan] +roomOthersChans = do + (ci, rnc) <- ask + let ri = clientRoom rnc ci + return $ map (sendChan . client rnc) (roomClients rnc ri) + +thisClientChans :: Reader (ClientIndex, IRnC) [ClientChan] +thisClientChans = do + (ci, rnc) <- ask + return $ [sendChan (rnc `client` ci)] + +answerClient :: [String] -> Reader (ClientIndex, IRnC) [Action] +answerClient msg = thisClientChans >>= return . (: []) . flip AnswerClients msg