equal
deleted
inserted
replaced
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, ""] |