equal
deleted
inserted
replaced
48 handleCmd_lobby ["CREATE_ROOM", rName, ""] |
48 handleCmd_lobby ["CREATE_ROOM", rName, ""] |
49 |
49 |
50 |
50 |
51 handleCmd_lobby ["JOIN_ROOM", roomName, roomPassword] = do |
51 handleCmd_lobby ["JOIN_ROOM", roomName, roomPassword] = do |
52 (_, irnc) <- ask |
52 (_, irnc) <- ask |
|
53 |
53 let ris = allRooms irnc |
54 let ris = allRooms irnc |
54 cl <- thisClient |
55 cl <- thisClient |
55 let maybeRI = find (\ri -> roomName == name (irnc `room` ri)) ris |
56 let maybeRI = find (\ri -> roomName == name (irnc `room` ri)) ris |
56 let jRI = fromJust maybeRI |
57 let jRI = fromJust maybeRI |
57 let jRoom = irnc `room` jRI |
58 let jRoom = irnc `room` jRI |
59 let jRoomClients = map (client irnc) $ roomClients irnc jRI |
60 let jRoomClients = map (client irnc) $ roomClients irnc jRI |
60 let nicks = map nick jRoomClients |
61 let nicks = map nick jRoomClients |
61 let owner = find isMaster jRoomClients |
62 let owner = find isMaster jRoomClients |
62 let chans = map sendChan (cl : jRoomClients) |
63 let chans = map sendChan (cl : jRoomClients) |
63 let isBanned = host cl `elem` roomBansList jRoom |
64 let isBanned = host cl `elem` roomBansList jRoom |
64 let hasTeamsInGame = (isJust $ gameInfo jRoom) && (or . map (\t -> teamowner t == nick cl) . teamsAtStart . fromJust $ gameInfo jRoom) |
65 let clTeams = |
|
66 if (isJust $ gameInfo jRoom) then |
|
67 map teamname . filter (\t -> teamowner t == nick cl) . teamsAtStart . fromJust $ gameInfo jRoom |
|
68 else |
|
69 [] |
65 return $ |
70 return $ |
66 if isNothing maybeRI then |
71 if isNothing maybeRI then |
67 [Warning $ loc "No such room"] |
72 [Warning $ loc "No such room"] |
68 else if (not sameProto) && (not $ isAdministrator cl) then |
73 else if (not sameProto) && (not $ isAdministrator cl) then |
69 [Warning $ loc "Room version incompatible to your hedgewars version"] |
74 [Warning $ loc "Room version incompatible to your hedgewars version"] |
86 ++ [sendStateFlags cl jRoomClients | not $ null jRoomClients] |
91 ++ [sendStateFlags cl jRoomClients | not $ null jRoomClients] |
87 ++ answerFullConfig cl jRoom |
92 ++ answerFullConfig cl jRoom |
88 ++ answerTeams cl jRoom |
93 ++ answerTeams cl jRoom |
89 ++ watchRound cl jRoom chans |
94 ++ watchRound cl jRoom chans |
90 ++ [AnswerClients [sendChan cl] ["CHAT", "[greeting]", greeting jRoom] | greeting jRoom /= ""] |
95 ++ [AnswerClients [sendChan cl] ["CHAT", "[greeting]", greeting jRoom] | greeting jRoom /= ""] |
91 ++ if hasTeamsInGame then ["EM", toEngineMsg $ 'G' `B.cons` nick cl] else [] |
96 ++ map (\t -> AnswerClients chans ["EM", toEngineMsg $ 'G' `B.cons` t]) clTeams |
92 |
97 |
93 where |
98 where |
94 sendStateFlags cl clients = AnswerClients [sendChan cl] . concat . intersperse [""] . filter (not . null) . concat $ |
99 sendStateFlags cl clients = AnswerClients [sendChan cl] . concat . intersperse [""] . filter (not . null) . concat $ |
95 [f "+r" ready, f "-r" unready, f "+g" ingame, f "-g" inroomlobby] |
100 [f "+r" ready, f "-r" unready, f "+g" ingame, f "-g" inroomlobby] |
96 where |
101 where |