will fix this http://code.google.com/p/hedgewars/source/detail?r=9f0e79ab51f00f3b1e133ae70cdd63f6963439c0 and will allow hedgewars to build without video recording enabled, for the time being although i want to talk to koda or someone to understand what should be #ifdef'd and if i've done too much or too little.. but at least that will let it build
module ServerState
(
module RoomsAndClients,
clientRoomA,
ServerState(..),
client's,
allClientsS,
roomClientsS,
sameProtoClientsS,
io
) where
import Control.Monad.State.Strict
import Data.Set as Set(Set)
import Data.Word
----------------------
import RoomsAndClients
import CoreTypes
data ServerState = ServerState {
clientIndex :: !(Maybe ClientIndex),
serverInfo :: !ServerInfo,
removedClients :: !(Set.Set ClientIndex),
roomsClients :: !MRnC
}
clientRoomA :: StateT ServerState IO RoomIndex
clientRoomA = do
(Just ci) <- gets clientIndex
rnc <- gets roomsClients
io $ clientRoomM rnc ci
client's :: (ClientInfo -> a) -> StateT ServerState IO a
client's f = do
(Just ci) <- gets clientIndex
rnc <- gets roomsClients
io $ client'sM rnc f ci
allClientsS :: StateT ServerState IO [ClientInfo]
allClientsS = gets roomsClients >>= liftIO . clientsM
roomClientsS :: RoomIndex -> StateT ServerState IO [ClientInfo]
roomClientsS ri = do
rnc <- gets roomsClients
io $ roomClientsM rnc ri
sameProtoClientsS :: Word16 -> StateT ServerState IO [ClientInfo]
sameProtoClientsS p = liftM f allClientsS
where
f = filter (\c -> clientProto c == p)
io :: IO a -> StateT ServerState IO a
io = liftIO