gameServer/HandlerUtils.hs
author koda
Sun, 16 May 2010 17:23:30 +0000
changeset 3463 23c50be687a9
parent 3435 4e4f88a7bdf2
child 3500 af8390d807d6
permissions -rw-r--r--
update sdl functions to latest revision add a grayscale utility to uiimage implement a preliminary support for chatting revert rotation changes for engine lots of code cleanup restored main event loop in hwengine fix some sdl bindings

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