356 pub fn remove_client(server: &mut HwServer, response: &mut Response, msg: String) { |
357 pub fn remove_client(server: &mut HwServer, response: &mut Response, msg: String) { |
357 let client_id = response.client_id(); |
358 let client_id = response.client_id(); |
358 let client = server.client(client_id); |
359 let client = server.client(client_id); |
359 let nick = client.nick.clone(); |
360 let nick = client.nick.clone(); |
360 |
361 |
361 if let Some((room_id, result)) = server |
362 match server.get_room_control(client_id) { |
362 .get_room_control(client_id) |
363 HwRoomOrServer::Room(mut control) => { |
363 .into_room() |
364 let room_id = control.room().id; |
364 .map(|mut control| (control.room().id, control.leave_room())) |
365 let result = control.leave_room(); |
365 { |
366 let server = control.server(); |
366 get_room_leave_result(server, server.room(room_id), &msg, result, response); |
367 get_room_leave_result(server, server.room(room_id), &msg, result, response); |
|
368 } |
|
369 _ => (), |
367 } |
370 } |
368 |
371 |
369 server.remove_client(client_id); |
372 server.remove_client(client_id); |
370 |
373 |
371 response.add(LobbyLeft(nick, msg.clone()).send_all()); |
374 response.add(LobbyLeft(nick, msg.clone()).send_all()); |