netserver/HWProto.hs
changeset 1401 2087672a2114
parent 1396 abb28dcb6d0d
child 1402 c164f215f7d2
equal deleted inserted replaced
1400:8196ce1d9be1 1401:2087672a2114
   105 
   105 
   106 
   106 
   107 -- 'noRoom' clients state command handlers
   107 -- 'noRoom' clients state command handlers
   108 handleCmd_noRoom :: CmdHandler
   108 handleCmd_noRoom :: CmdHandler
   109 handleCmd_noRoom client _ rooms ["LIST"] =
   109 handleCmd_noRoom client _ rooms ["LIST"] =
   110 		(noChangeClients, noChangeRooms, answerServerMessage ++ (answerRoomsList $ concat $ map roomInfo rooms))
   110 		(noChangeClients, noChangeRooms, answerServerMessage ++ (answerRoomsList $ concatMap roomInfo $ sameProtoRooms))
   111 		where
   111 		where
   112 			roomInfo room = [name room, show $ playersIn room, show $ gameinprogress room]
   112 			roomInfo room = [name room, show $ playersIn room, show $ gameinprogress room]
       
   113 			sameProtoRooms = filter (\r -> roomProto r == protocol client) rooms
   113 
   114 
   114 handleCmd_noRoom client _ rooms ["CREATE", newRoom, roomPassword] =
   115 handleCmd_noRoom client _ rooms ["CREATE", newRoom, roomPassword] =
   115 	if (not $ isDedicated globalOptions) && (not $ null rooms) then
   116 	if (not $ isDedicated globalOptions) && (not $ null rooms) then
   116 		(noChangeClients, noChangeRooms, answerCannotCreateRoom)
   117 		(noChangeClients, noChangeRooms, answerCannotCreateRoom)
   117 	else
   118 	else
   131 	else if roomPassword /= password clRoom then
   132 	else if roomPassword /= password clRoom then
   132 		(noChangeClients, noChangeRooms, answerWrongPassword)
   133 		(noChangeClients, noChangeRooms, answerWrongPassword)
   133 	else
   134 	else
   134 		(modifyClient client{room = roomName}, modifyRoom clRoom{playersIn = 1 + playersIn clRoom}, answerNicks ++ (answerJoined $ nick client) ++ answerFullConfig clRoom ++ answerAllTeams clRoom)
   135 		(modifyClient client{room = roomName}, modifyRoom clRoom{playersIn = 1 + playersIn clRoom}, answerNicks ++ (answerJoined $ nick client) ++ answerFullConfig clRoom ++ answerAllTeams clRoom)
   135 	where
   136 	where
   136 		noSuchRoom = isNothing $ find (\room -> roomName == name room) rooms
   137 		noSuchRoom = isNothing $ find (\room -> roomName == name room && roomProto room == protocol client) rooms
   137 		answerNicks = [(clientOnly, ["JOINED"] ++ (map nick $ filter (\ci -> room ci == roomName) clients))]
   138 		answerNicks = [(clientOnly, ["JOINED"] ++ (map nick $ filter (\ci -> room ci == roomName) clients))]
   138 		clRoom = roomByName roomName rooms
   139 		clRoom = roomByName roomName rooms
   139 
   140 
   140 handleCmd_noRoom client clients rooms ["JOIN", roomName] =
   141 handleCmd_noRoom client clients rooms ["JOIN", roomName] =
   141 	handleCmd_noRoom client clients rooms ["JOIN", roomName, ""]
   142 	handleCmd_noRoom client clients rooms ["JOIN", roomName, ""]