gameServer/ServerState.hs
author unc0rr
Sun, 06 Jun 2010 19:03:06 +0000
changeset 3501 a3159a410e5c
parent 3458 11cd56019f00
child 3502 ad38c653b7d9
permissions -rw-r--r--
Reimplement more core actions

module ServerState
    (
    module RoomsAndClients,
    clientRoomA,
    ServerState(..),
    client's,
    allClientsS
    ) where

import Control.Monad.State
----------------------
import RoomsAndClients
import CoreTypes

data ServerState = ServerState {
        clientIndex :: Maybe ClientIndex,
        serverInfo :: ServerInfo,
        roomsClients :: MRnC
    }


clientRoomA :: StateT ServerState IO RoomIndex
clientRoomA = do
    (Just ci) <- gets clientIndex
    rnc <- gets roomsClients
    liftIO $ clientRoomM rnc ci

client's :: (ClientInfo -> a) -> StateT ServerState IO a
client's f = do
    (Just ci) <- gets clientIndex
    rnc <- gets roomsClients
    liftIO $ client'sM rnc f ci
    
allClientsS :: StateT ServerState IO [ClientInfo]
allClientsS = gets roomsClients >>= liftIO . clientsM