gameServer/Actions.hs
changeset 7757 c20e6c80e249
parent 7748 f160fbc139b1
child 7766 98edc0724a28
equal deleted inserted replaced
7756:b89bd0ffb8aa 7757:c20e6c80e249
    53     | Unban B.ByteString
    53     | Unban B.ByteString
    54     | ChangeMaster
    54     | ChangeMaster
    55     | RemoveClientTeams ClientIndex
    55     | RemoveClientTeams ClientIndex
    56     | ModifyClient (ClientInfo -> ClientInfo)
    56     | ModifyClient (ClientInfo -> ClientInfo)
    57     | ModifyClient2 ClientIndex (ClientInfo -> ClientInfo)
    57     | ModifyClient2 ClientIndex (ClientInfo -> ClientInfo)
       
    58     | ModifyRoomClients (ClientInfo -> ClientInfo)
    58     | ModifyRoom (RoomInfo -> RoomInfo)
    59     | ModifyRoom (RoomInfo -> RoomInfo)
    59     | ModifyServerInfo (ServerInfo -> ServerInfo)
    60     | ModifyServerInfo (ServerInfo -> ServerInfo)
    60     | AddRoom B.ByteString B.ByteString
    61     | AddRoom B.ByteString B.ByteString
    61     | CheckRegistered
    62     | CheckRegistered
    62     | ClearAccountsCache
    63     | ClearAccountsCache
   180 processAction (ModifyClient2 ci f) = do
   181 processAction (ModifyClient2 ci f) = do
   181     rnc <- gets roomsClients
   182     rnc <- gets roomsClients
   182     io $ modifyClient rnc f ci
   183     io $ modifyClient rnc f ci
   183     return ()
   184     return ()
   184 
   185 
       
   186 processAction (ModifyRoomClients f) = do
       
   187     rnc <- gets roomsClients
       
   188     ri <- clientRoomA
       
   189     roomClIDs <- io $ roomClientsIndicesM rnc ri
       
   190     io $ mapM_ (modifyClient rnc f) roomClIDs
       
   191 
   185 
   192 
   186 processAction (ModifyRoom f) = do
   193 processAction (ModifyRoom f) = do
   187     rnc <- gets roomsClients
   194     rnc <- gets roomsClients
   188     ri <- clientRoomA
   195     ri <- clientRoomA
   189     io $ modifyRoom rnc f ri
   196     io $ modifyRoom rnc f ri
   313     rnc <- gets roomsClients
   320     rnc <- gets roomsClients
   314     ri <- clientRoomA
   321     ri <- clientRoomA
   315     roomPlayers <- roomClientsS ri
   322     roomPlayers <- roomClientsS ri
   316     roomClIDs <- io $ roomClientsIndicesM rnc ri
   323     roomClIDs <- io $ roomClientsIndicesM rnc ri
   317     pr <- client's clientProto
   324     pr <- client's clientProto
   318     processAction $ AnswerClients (map sendChan roomPlayers) $ notReadyMessage pr (map nick roomPlayers)
   325     mapM_ processAction [
   319     io $ mapM_ (modifyClient rnc (\cl -> cl{isReady = False})) roomClIDs
   326         AnswerClients (map sendChan roomPlayers) $ notReadyMessage pr (map nick roomPlayers)
   320     processAction $ ModifyRoom (\r -> r{readyPlayers = 0})
   327         , ModifyRoomClients (\cl -> cl{isReady = False})
       
   328         , ModifyRoom (\r -> r{readyPlayers = 0})
       
   329         ]
   321     where
   330     where
   322         notReadyMessage p nicks = if p < 38 then "NOT_READY" : nicks else "CLIENT_FLAGS" : "-r" : nicks
   331         notReadyMessage p nicks = if p < 38 then "NOT_READY" : nicks else "CLIENT_FLAGS" : "-r" : nicks
   323 
   332 
   324 
   333 
   325 processAction FinishGame = do
   334 processAction FinishGame = do