equal
deleted
inserted
replaced
157 serverInfo, |
157 serverInfo, |
158 adjust (\cl -> cl{roomID = 0}) clID clients, |
158 adjust (\cl -> cl{roomID = 0}) clID clients, |
159 adjust (\r -> r{ |
159 adjust (\r -> r{ |
160 playersIDs = IntSet.delete clID (playersIDs r), |
160 playersIDs = IntSet.delete clID (playersIDs r), |
161 playersIn = (playersIn r) - 1, |
161 playersIn = (playersIn r) - 1, |
162 readyPlayers = if isReady client then readyPlayers r - 1 else readyPlayers r |
162 readyPlayers = if isReady client then (readyPlayers r) - 1 else readyPlayers r |
163 }) rID $ |
163 }) rID $ |
164 adjust (\r -> r{playersIDs = IntSet.insert clID (playersIDs r)}) 0 rooms |
164 adjust (\r -> r{playersIDs = IntSet.insert clID (playersIDs r)}) 0 rooms |
165 ) |
165 ) |
166 where |
166 where |
167 rID = roomID client |
167 rID = roomID client |
193 processAction (clID, serverInfo, clients, rooms) (RemoveRoom) = do |
193 processAction (clID, serverInfo, clients, rooms) (RemoveRoom) = do |
194 processAction (clID, serverInfo, clients, rooms) $ AnswerLobby ["ROOM", "DEL", name room] |
194 processAction (clID, serverInfo, clients, rooms) $ AnswerLobby ["ROOM", "DEL", name room] |
195 processAction (clID, serverInfo, clients, rooms) $ AnswerOthersInRoom ["ROOMABANDONED", name room] |
195 processAction (clID, serverInfo, clients, rooms) $ AnswerOthersInRoom ["ROOMABANDONED", name room] |
196 return (clID, |
196 return (clID, |
197 serverInfo, |
197 serverInfo, |
198 Data.IntMap.map (\cl -> if roomID cl == rID then cl{roomID = 0, isMaster = False} else cl) clients, |
198 Data.IntMap.map (\cl -> if roomID cl == rID then cl{roomID = 0, isMaster = False, isReady = False} else cl) clients, |
199 delete rID $ adjust (\r -> r{playersIDs = IntSet.union (playersIDs room) (playersIDs r)}) 0 rooms |
199 delete rID $ adjust (\r -> r{playersIDs = IntSet.union (playersIDs room) (playersIDs r)}) 0 rooms |
200 ) |
200 ) |
201 where |
201 where |
202 room = rooms ! rID |
202 room = rooms ! rID |
203 rID = roomID client |
203 rID = roomID client |
207 processAction (clID, serverInfo, clients, rooms) (UnreadyRoomClients) = do |
207 processAction (clID, serverInfo, clients, rooms) (UnreadyRoomClients) = do |
208 processAction (clID, serverInfo, clients, rooms) $ AnswerThisRoom ("NOT_READY" : roomPlayers) |
208 processAction (clID, serverInfo, clients, rooms) $ AnswerThisRoom ("NOT_READY" : roomPlayers) |
209 return (clID, |
209 return (clID, |
210 serverInfo, |
210 serverInfo, |
211 Data.IntMap.map (\cl -> if roomID cl == rID then cl{isReady = False} else cl) clients, |
211 Data.IntMap.map (\cl -> if roomID cl == rID then cl{isReady = False} else cl) clients, |
212 rooms) |
212 adjust (\r -> r{readyPlayers = 0}) rID rooms) |
213 where |
213 where |
214 room = rooms ! rID |
214 room = rooms ! rID |
215 rID = roomID client |
215 rID = roomID client |
216 client = clients ! clID |
216 client = clients ! clID |
217 roomPlayers = Prelude.map (nick . (clients !)) roomPlayersIDs |
217 roomPlayers = Prelude.map (nick . (clients !)) roomPlayersIDs |