gameServer/Actions.hs
changeset 6753 e95b1f62d0de
parent 6733 5abbc345a82f
child 6756 344d32bb1328
equal deleted inserted replaced
6752:11d898afe582 6753:e95b1f62d0de
    34     | SendServerMessage
    34     | SendServerMessage
    35     | SendServerVars
    35     | SendServerVars
    36     | MoveToRoom RoomIndex
    36     | MoveToRoom RoomIndex
    37     | MoveToLobby B.ByteString
    37     | MoveToLobby B.ByteString
    38     | RemoveTeam B.ByteString
    38     | RemoveTeam B.ByteString
       
    39     | SendTeamRemovalMessage B.ByteString
    39     | RemoveRoom
    40     | RemoveRoom
    40     | UnreadyRoomClients
    41     | UnreadyRoomClients
    41     | JoinLobby
    42     | JoinLobby
    42     | ProtocolError B.ByteString
    43     | ProtocolError B.ByteString
    43     | Warning B.ByteString
    44     | Warning B.ByteString
   302     processAction $ ModifyRoom (\r -> r{readyPlayers = 0})
   303     processAction $ ModifyRoom (\r -> r{readyPlayers = 0})
   303     where
   304     where
   304         notReadyMessage p nicks = if p < 38 then "NOT_READY" : nicks else "CLIENT_FLAGS" : "-r" : nicks
   305         notReadyMessage p nicks = if p < 38 then "NOT_READY" : nicks else "CLIENT_FLAGS" : "-r" : nicks
   305 
   306 
   306 
   307 
       
   308 processAction (SendTeamRemovalMessage teamName) = do
       
   309     chans <- othersChans
       
   310     mapM_ processAction [
       
   311         AnswerClients chans ["EM", rmTeamMsg],
       
   312         ModifyRoom (\r -> r{
       
   313                 gameInfo = liftM (\g -> g{
       
   314                 roundMsgs = roundMsgs g Seq.|> rmTeamMsg
       
   315                 }) $ gameInfo r
       
   316             })
       
   317         ]
       
   318     where
       
   319         rmTeamMsg = toEngineMsg $ 'F' `B.cons` teamName
       
   320     
       
   321     
   307 processAction (RemoveTeam teamName) = do
   322 processAction (RemoveTeam teamName) = do
   308     rnc <- gets roomsClients
   323     rnc <- gets roomsClients
   309     ri <- clientRoomA
   324     ri <- clientRoomA
   310     inGame <- io $ room'sM rnc (isJust . gameInfo) ri
   325     inGame <- io $ room'sM rnc (isJust . gameInfo) ri
   311     chans <- othersChans
   326     chans <- othersChans
   314                 AnswerClients chans ["REMOVE_TEAM", teamName],
   329                 AnswerClients chans ["REMOVE_TEAM", teamName],
   315                 ModifyRoom (\r -> r{teams = Prelude.filter (\t -> teamName /= teamname t) $ teams r})
   330                 ModifyRoom (\r -> r{teams = Prelude.filter (\t -> teamName /= teamname t) $ teams r})
   316                 ]
   331                 ]
   317         else
   332         else
   318             mapM_ processAction [
   333             mapM_ processAction [
   319                 AnswerClients chans ["EM", rmTeamMsg],
   334                 SendTeamRemovalMessage teamName,
   320                 ModifyRoom (\r -> r{
   335                 ModifyRoom (\r -> r{
   321                     teams = Prelude.filter (\t -> teamName /= teamname t) $ teams r,
   336                     teams = Prelude.filter (\t -> teamName /= teamname t) $ teams r,
   322                         gameInfo = liftM (\g -> g{
   337                         gameInfo = liftM (\g -> g{
   323                         leftTeams = teamName : leftTeams g,
   338                         leftTeams = teamName : leftTeams g
   324                         roundMsgs = roundMsgs g Seq.|> rmTeamMsg
       
   325                         }) $ gameInfo r
   339                         }) $ gameInfo r
   326                     })
   340                     })
   327                 ]
   341                 ]
   328     where
       
   329         rmTeamMsg = toEngineMsg $ 'F' `B.cons` teamName
       
   330 
   342 
   331 
   343 
   332 processAction (RemoveClientTeams clId) = do
   344 processAction (RemoveClientTeams clId) = do
   333     rnc <- gets roomsClients
   345     rnc <- gets roomsClients
   334 
   346