gameServer/Actions.hs
changeset 7149 08a30dd92900
parent 7126 8daa5c8e84c0
child 7321 57bd4f201401
equal deleted inserted replaced
7123:9fe1c4091dd1 7149:08a30dd92900
   312     ri <- clientRoomA
   312     ri <- clientRoomA
   313     thisRoomChans <- liftM (map sendChan) $ roomClientsS ri
   313     thisRoomChans <- liftM (map sendChan) $ roomClientsS ri
   314     clNick <- client's nick
   314     clNick <- client's nick
   315     answerRemovedTeams <- io $ 
   315     answerRemovedTeams <- io $ 
   316          room'sM rnc (map (\t -> AnswerClients thisRoomChans ["REMOVE_TEAM", t]) . leftTeams . fromJust . gameInfo) ri
   316          room'sM rnc (map (\t -> AnswerClients thisRoomChans ["REMOVE_TEAM", t]) . leftTeams . fromJust . gameInfo) ri
   317     
   317          
   318     mapM_ processAction $ SaveReplay
   318     mapM_ processAction $ 
       
   319         SaveReplay
   319         : ModifyRoom
   320         : ModifyRoom
   320             (\r -> r{
   321             (\r -> r{
   321                 gameInfo = Nothing,
   322                 gameInfo = Nothing,
   322                 readyPlayers = 0
   323                 readyPlayers = 0
   323                 }
   324                 }
   330     chans <- othersChans
   331     chans <- othersChans
   331     mapM_ processAction [
   332     mapM_ processAction [
   332         AnswerClients chans ["EM", rmTeamMsg],
   333         AnswerClients chans ["EM", rmTeamMsg],
   333         ModifyRoom (\r -> r{
   334         ModifyRoom (\r -> r{
   334                 gameInfo = liftM (\g -> g{
   335                 gameInfo = liftM (\g -> g{
   335                 teamsInGameNumber = teamsInGameNumber g - 1
   336                     teamsInGameNumber = teamsInGameNumber g - 1
   336                 , roundMsgs = roundMsgs g Seq.|> rmTeamMsg
   337                     , roundMsgs = roundMsgs g Seq.|> rmTeamMsg
   337                 , leftTeams = teamName : leftTeams g
       
   338                 }) $ gameInfo r
   338                 }) $ gameInfo r
   339             })
   339             })
   340         ]
   340         ]
   341         
   341         
   342     rnc <- gets roomsClients
   342     rnc <- gets roomsClients
   351 processAction (RemoveTeam teamName) = do
   351 processAction (RemoveTeam teamName) = do
   352     rnc <- gets roomsClients
   352     rnc <- gets roomsClients
   353     ri <- clientRoomA
   353     ri <- clientRoomA
   354     inGame <- io $ room'sM rnc (isJust . gameInfo) ri
   354     inGame <- io $ room'sM rnc (isJust . gameInfo) ri
   355     chans <- othersChans
   355     chans <- othersChans
   356     if not $ inGame then
   356     mapM_ processAction $ 
   357             mapM_ processAction [
   357         ModifyRoom (\r -> r{
   358                 ModifyRoom (\r -> r{teams = Prelude.filter (\t -> teamName /= teamname t) $ teams r})
   358             teams = Prelude.filter (\t -> teamName /= teamname t) $ teams r
   359                 , AnswerClients chans ["REMOVE_TEAM", teamName]
   359             , gameInfo = liftM (\g -> g{leftTeams = teamName : leftTeams g}) $ gameInfo r
   360                 ]
   360             })
   361         else
   361         : AnswerClients chans ["REMOVE_TEAM", teamName]
   362             mapM_ processAction [
   362         : [SendTeamRemovalMessage teamName | inGame]
   363                 ModifyRoom (\r -> r{teams = Prelude.filter (\t -> teamName /= teamname t) $ teams r})
       
   364                 , SendTeamRemovalMessage teamName
       
   365                 ]
       
   366 
   363 
   367 
   364 
   368 processAction (RemoveClientTeams clId) = do
   365 processAction (RemoveClientTeams clId) = do
   369     rnc <- gets roomsClients
   366     rnc <- gets roomsClients
   370 
   367