gameServer/Actions.hs
changeset 12761 0167e337553b
parent 12114 cdadc1d487f1
child 12864 73ebc894a725
equal deleted inserted replaced
12760:5acf6b91df76 12761:0167e337553b
   513 processAction JoinLobby = do
   513 processAction JoinLobby = do
   514     chan <- client's sendChan
   514     chan <- client's sendChan
   515     rnc <- gets roomsClients
   515     rnc <- gets roomsClients
   516     clientNick <- client's nick
   516     clientNick <- client's nick
   517     clProto <- client's clientProto
   517     clProto <- client's clientProto
   518     isAuthenticated <- liftM isRegistered $ client's id
   518     isAuthenticated <- client's isRegistered
   519     isAdmin <- client's isAdministrator
   519     isAdmin <- client's isAdministrator
   520     isContr <- client's isContributor
   520     isContr <- client's isContributor
   521     loggedInClients <- liftM (Prelude.filter isVisible) $! allClientsS
   521     loggedInClients <- liftM (Prelude.filter isVisible) $! allClientsS
   522     let (lobbyNicks, clientsChans) = unzip . L.map (nick &&& sendChan) $ loggedInClients
   522     let (lobbyNicks, clientsChans) = unzip . L.map (nick &&& sendChan) $ loggedInClients
   523     let authenticatedNicks = L.map nick . L.filter isRegistered $ loggedInClients
   523     let authenticatedNicks = L.map nick . L.filter isRegistered $ loggedInClients
   529         >>= mapM (client'sM rnc nick)
   529         >>= mapM (client'sM rnc nick)
   530     let clFlags = B.concat . L.concat $ [["u" | isAuthenticated], ["a" | isAdmin], ["c" | isContr]]
   530     let clFlags = B.concat . L.concat $ [["u" | isAuthenticated], ["a" | isAdmin], ["c" | isContr]]
   531 
   531 
   532     roomsInfoList <- io $ do
   532     roomsInfoList <- io $ do
   533         rooms <- roomsM rnc
   533         rooms <- roomsM rnc
   534         mapM (\r -> (if isNothing $ masterID r then return "" else client'sM rnc nick (fromJust $ masterID r))
   534         mapM (\r -> (mapM (client'sM rnc id) $ masterID r)
   535             >>= \cn -> return $ roomInfo clProto cn r)
   535             >>= \cn -> return $ roomInfo clProto (maybeNick cn) r)
   536             $ filter (\r -> (roomProto r == clProto)) rooms
   536             $ filter (\r -> (roomProto r == clProto)) rooms
   537 
   537 
   538     mapM_ processAction . concat $ [
   538     mapM_ processAction . concat $ [
   539         [AnswerClients clientsChans ["LOBBY:JOINED", clientNick]]
   539         [AnswerClients clientsChans ["LOBBY:JOINED", clientNick]]
   540         , [AnswerClients [chan] ("LOBBY:JOINED" : clientNick : lobbyNicks)]
   540         , [AnswerClients [chan] ("LOBBY:JOINED" : clientNick : lobbyNicks)]