54 handleCmd_lobby ["CHAT", msg] = do |
54 handleCmd_lobby ["CHAT", msg] = do |
55 n <- clientNick |
55 n <- clientNick |
56 s <- roomOthersChans |
56 s <- roomOthersChans |
57 return [AnswerClients s ["CHAT", n, msg]] |
57 return [AnswerClients s ["CHAT", n, msg]] |
58 |
58 |
59 {- |
59 handleCmd_lobby ["CREATE_ROOM", newRoom, roomPassword] |
60 handleCmd_lobby clID clients rooms ["CREATE_ROOM", newRoom, roomPassword] |
60 | illegalName newRoom = return [Warning "Illegal room name"] |
61 | haveSameRoom = [Warning "Room exists"] |
61 | otherwise = do |
62 | illegalName newRoom = [Warning "Illegal room name"] |
62 rs <- allRoomInfos |
63 | otherwise = |
63 (ci, irnc) <- ask |
64 [RoomRemoveThisClient "", -- leave lobby |
64 let cl = irnc `client` ci |
65 AddRoom newRoom roomPassword, |
65 return $ if isJust $ find (\room -> newRoom == name room) rs then |
66 AnswerThisClient ["NOT_READY", clientNick] |
66 [Warning "Room exists"] |
67 ] |
67 else |
68 where |
68 [ |
69 clientNick = nick $ clients IntMap.! clID |
69 AddRoom newRoom roomPassword, |
70 haveSameRoom = isJust $ find (\room -> newRoom == name room) $ IntMap.elems rooms |
70 AnswerClients [sendChan cl] ["NOT_READY", nick cl] |
|
71 ] |
71 |
72 |
72 |
73 |
73 handleCmd_lobby clID clients rooms ["CREATE_ROOM", newRoom] = |
74 handleCmd_lobby ["CREATE_ROOM", newRoom] = |
74 handleCmd_lobby clID clients rooms ["CREATE_ROOM", newRoom, ""] |
75 handleCmd_lobby ["CREATE_ROOM", newRoom, ""] |
75 |
76 |
|
77 {- |
76 |
78 |
77 handleCmd_lobby clID clients rooms ["JOIN_ROOM", roomName, roomPassword] |
79 handleCmd_lobby clID clients rooms ["JOIN_ROOM", roomName, roomPassword] |
78 | noSuchRoom = [Warning "No such room"] |
80 | noSuchRoom = [Warning "No such room"] |
79 | isRestrictedJoins jRoom = [Warning "Joining restricted"] |
81 | isRestrictedJoins jRoom = [Warning "Joining restricted"] |
80 | roomPassword /= password jRoom = [Warning "Wrong password"] |
82 | roomPassword /= password jRoom = [Warning "Wrong password"] |