gameServer/Actions.hs
changeset 2126 cb249fa8e3da
parent 2118 0ebcc98ebc1a
child 2155 d897222d3339
equal deleted inserted replaced
2125:3ebe8cd30b84 2126:cb249fa8e3da
    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