netserver/HWProto.hs
changeset 1558 3370b7ffeb5c
parent 1512 43742041c211
child 1559 71e1f67dcfe7
equal deleted inserted replaced
1557:0d1fa1d6d8d5 1558:3370b7ffeb5c
   189 	else if roomPassword /= password clRoom then
   189 	else if roomPassword /= password clRoom then
   190 		(noChangeClients, noChangeRooms, answerWrongPassword)
   190 		(noChangeClients, noChangeRooms, answerWrongPassword)
   191 	else if isRestrictedJoins clRoom then
   191 	else if isRestrictedJoins clRoom then
   192 		(noChangeClients, noChangeRooms, answerRestricted)
   192 		(noChangeClients, noChangeRooms, answerRestricted)
   193 	else
   193 	else
   194 		(modifyClient client{room = roomName}, modifyRoom clRoom{playersIn = 1 + playersIn clRoom}, answerNicks ++ answerReady ++ (answerJoined $ nick client) ++ (answerNotReady $ nick client) ++ answerFullConfig clRoom ++ answerAllTeams clRoom)
   194 		(modifyClient client{room = roomName}, modifyRoom clRoom{playersIn = 1 + playersIn clRoom}, answerNicks ++ answerReady ++ (answerJoined $ nick client) ++ (answerNotReady $ nick client) ++ answerFullConfig clRoom ++ answerAllTeams clRoom ++ watchRound)
   195 	where
   195 	where
   196 		noSuchRoom = isNothing $ find (\room -> roomName == name room && roomProto room == protocol client) rooms
   196 		noSuchRoom = isNothing $ find (\room -> roomName == name room && roomProto room == protocol client) rooms
   197 		answerNicks = answerClientOnly $ ["JOINED"] ++ (map nick $ sameRoomClients)
   197 		answerNicks = answerClientOnly $ ["JOINED"] ++ (map nick $ sameRoomClients)
   198 		answerReady = concatMap (\c -> answerClientOnly [if isReady c then "READY" else "NOT_READY", nick c]) sameRoomClients
   198 		answerReady = concatMap (\c -> answerClientOnly [if isReady c then "READY" else "NOT_READY", nick c]) sameRoomClients
   199 		sameRoomClients = filter (\ci -> room ci == roomName) clients
   199 		sameRoomClients = filter (\ci -> room ci == roomName) clients
   200 		clRoom = roomByName roomName rooms
   200 		clRoom = roomByName roomName rooms
       
   201 		watchRound = if (roomProto clRoom < 20) || (not $ gameinprogress clRoom) then
       
   202 					[]
       
   203 				else
       
   204 					answerRunGame ++ answerClientOnly ("GAMEMSG" : roundMsgs clRoom)
   201 
   205 
   202 handleCmd_noRoom client clients rooms ["JOIN", roomName] =
   206 handleCmd_noRoom client clients rooms ["JOIN", roomName] =
   203 	handleCmd_noRoom client clients rooms ["JOIN", roomName, ""]
   207 	handleCmd_noRoom client clients rooms ["JOIN", roomName, ""]
   204 
   208 
   205 handleCmd_noRoom _ _ _ _ = (noChangeClients, noChangeRooms, answerBadCmd)
   209 handleCmd_noRoom _ _ _ _ = (noChangeClients, noChangeRooms, answerBadCmd)
   341 	where
   345 	where
   342 		clRoom = roomByName (room client) rooms
   346 		clRoom = roomByName (room client) rooms
   343 		sameRoomClients = filter (\ci -> room ci == name clRoom) clients
   347 		sameRoomClients = filter (\ci -> room ci == name clRoom) clients
   344 		answerAllNotReady = concatMap (\cl -> answerSameRoom ["NOT_READY", nick cl]) sameRoomClients
   348 		answerAllNotReady = concatMap (\cl -> answerSameRoom ["NOT_READY", nick cl]) sameRoomClients
   345 
   349 
   346 handleCmd_inRoom client _ _ ["GAMEMSG", msg] =
   350 handleCmd_inRoom client _ rooms ["GAMEMSG", msg] =
   347 	(noChangeClients, noChangeRooms, answerOthersRoom ["GAMEMSG", msg])
   351 	(noChangeClients, addMsg, answerOthersRoom ["GAMEMSG", msg])
       
   352 	where
       
   353 		addMsg = if roomProto clRoom < 20 then
       
   354 					noChangeRooms
       
   355 				else
       
   356 					modifyRoom clRoom{roundMsgs = roundMsgs clRoom ++ [msg]}
       
   357 		clRoom = roomByName (room client) rooms
   348 
   358 
   349 handleCmd_inRoom client clients rooms ["KICK", kickNick] =
   359 handleCmd_inRoom client clients rooms ["KICK", kickNick] =
   350 	if isMaster client then
   360 	if isMaster client then
   351 		if noSuchClient || (kickClient == client) then
   361 		if noSuchClient || (kickClient == client) then
   352 			(noChangeClients, noChangeRooms, [])
   362 			(noChangeClients, noChangeRooms, [])