117 |
117 |
118 |
118 |
119 handleCmd_lobby ["JOIN_ROOM", roomName] = |
119 handleCmd_lobby ["JOIN_ROOM", roomName] = |
120 handleCmd_lobby ["JOIN_ROOM", roomName, ""] |
120 handleCmd_lobby ["JOIN_ROOM", roomName, ""] |
121 |
121 |
|
122 |
|
123 handleCmd_lobby ["FOLLOW", asknick] = do |
|
124 (_, rnc) <- ask |
|
125 ci <- clientByNick asknick |
|
126 let ri = clientRoom rnc $ fromJust ci |
|
127 let clRoom = room rnc ri |
|
128 if isNothing ci || ri == lobbyId then |
|
129 return [] |
|
130 else |
|
131 handleCmd_lobby ["JOIN_ROOM", name clRoom] |
|
132 |
122 {- |
133 {- |
123 handleCmd_lobby clID clients rooms ["FOLLOW", asknick] = |
|
124 if noSuchClient || roomID followClient == 0 then |
|
125 [] |
|
126 else |
|
127 handleCmd_lobby clID clients rooms ["JOIN_ROOM", roomName] |
|
128 where |
|
129 maybeClient = Foldable.find (\cl -> asknick == nick cl) clients |
|
130 noSuchClient = isNothing maybeClient |
|
131 followClient = fromJust maybeClient |
|
132 roomName = name $ rooms IntMap.! roomID followClient |
|
133 |
|
134 |
|
135 --------------------------- |
134 --------------------------- |
136 -- Administrator's stuff -- |
135 -- Administrator's stuff -- |
137 |
136 |
138 handleCmd_lobby clID clients rooms ["KICK", kickNick] = |
137 handleCmd_lobby clID clients rooms ["KICK", kickNick] = |
139 [KickClient kickID | isAdministrator client && (not noSuchClient) && kickID /= clID] |
138 [KickClient kickID | isAdministrator client && (not noSuchClient) && kickID /= clID] |