20 | AnswerThisRoom [String] |
20 | AnswerThisRoom [String] |
21 | AnswerOthersInRoom [String] |
21 | AnswerOthersInRoom [String] |
22 | AnswerLobby [String] |
22 | AnswerLobby [String] |
23 | SendServerMessage |
23 | SendServerMessage |
24 | RoomAddThisClient Int -- roomID |
24 | RoomAddThisClient Int -- roomID |
25 | RoomRemoveThisClient |
25 | RoomRemoveThisClient String |
26 | RemoveTeam String |
26 | RemoveTeam String |
27 | RemoveRoom |
27 | RemoveRoom |
28 | UnreadyRoomClients |
28 | UnreadyRoomClients |
29 | MoveToLobby |
29 | MoveToLobby |
30 | ProtocolError String |
30 | ProtocolError String |
186 AnswerAllOthers ["LOBBY:JOINED", nick client] |
186 AnswerAllOthers ["LOBBY:JOINED", nick client] |
187 else |
187 else |
188 AnswerThisRoom ["JOINED", nick client] |
188 AnswerThisRoom ["JOINED", nick client] |
189 |
189 |
190 |
190 |
191 processAction (clID, serverInfo, clients, rooms) (RoomRemoveThisClient) = do |
191 processAction (clID, serverInfo, clients, rooms) (RoomRemoveThisClient msg) = do |
192 (_, _, newClients, newRooms) <- |
192 (_, _, newClients, newRooms) <- |
193 if roomID client /= 0 then |
193 if roomID client /= 0 then |
194 foldM |
194 foldM |
195 processAction |
195 processAction |
196 (clID, serverInfo, clients, rooms) |
196 (clID, serverInfo, clients, rooms) |
197 [AnswerOthersInRoom ["LEFT", nick client, "part"], |
197 [AnswerOthersInRoom ["LEFT", nick client, msg], |
198 RemoveClientTeams clID] |
198 RemoveClientTeams clID] |
199 else |
199 else |
200 return (clID, serverInfo, clients, rooms) |
200 return (clID, serverInfo, clients, rooms) |
201 |
201 |
202 return ( |
202 return ( |
337 return (clID, serverInfo, clients, rooms) |
337 return (clID, serverInfo, clients, rooms) |
338 |
338 |
339 |
339 |
340 processAction (clID, serverInfo, clients, rooms) (KickRoomClient kickID) = do |
340 processAction (clID, serverInfo, clients, rooms) (KickRoomClient kickID) = do |
341 writeChan (sendChan $ clients ! kickID) ["KICKED"] |
341 writeChan (sendChan $ clients ! kickID) ["KICKED"] |
342 liftM2 replaceID (return clID) (processAction (kickID, serverInfo, clients, rooms) $ RoomRemoveThisClient) |
342 liftM2 replaceID (return clID) (processAction (kickID, serverInfo, clients, rooms) $ RoomRemoveThisClient "kicked") |
343 |
343 |
344 |
344 |
345 processAction (clID, serverInfo, clients, rooms) (RemoveClientTeams teamsClID) = do |
345 processAction (clID, serverInfo, clients, rooms) (RemoveClientTeams teamsClID) = do |
346 liftM2 replaceID (return clID) $ |
346 liftM2 replaceID (return clID) $ |
347 foldM processAction (teamsClID, serverInfo, clients, rooms) $ removeTeamsActions |
347 foldM processAction (teamsClID, serverInfo, clients, rooms) $ removeTeamsActions |