rust/hedgewars-server/src/server/handlers/lobby.rs
changeset 14785 a1077e8d26f4
parent 14783 b3adc030104b
child 14787 0e64acbc3f8b
equal deleted inserted replaced
14784:8390d5e4e39c 14785:a1077e8d26f4
    62             );
    62             );
    63         }
    63         }
    64         JoinRoom(name, _password) => {
    64         JoinRoom(name, _password) => {
    65             let room = server.rooms.iter().find(|(_, r)| r.name == name);
    65             let room = server.rooms.iter().find(|(_, r)| r.name == name);
    66             let room_id = room.map(|(_, r)| r.id);
    66             let room_id = room.map(|(_, r)| r.id);
    67             let nicks = server
    67 
    68                 .clients
       
    69                 .iter()
       
    70                 .filter(|(_, c)| c.room_id == room_id)
       
    71                 .map(|(_, c)| c.nick.clone())
       
    72                 .collect();
       
    73             let client = &mut server.clients[client_id];
    68             let client = &mut server.clients[client_id];
    74 
    69 
    75             if let Some((_, room)) = room {
    70             if let Some((_, room)) = room {
    76                 if client.protocol_number != room.protocol_number {
    71                 if client.protocol_number != room.protocol_number {
    77                     response.add(
    72                     response.add(
    91                     let nick = client.nick.clone();
    86                     let nick = client.nick.clone();
    92                     server.move_to_room(client_id, room_id);
    87                     server.move_to_room(client_id, room_id);
    93 
    88 
    94                     response.add(RoomJoined(vec![nick.clone()]).send_all().in_room(room_id));
    89                     response.add(RoomJoined(vec![nick.clone()]).send_all().in_room(room_id));
    95                     response.add(ClientFlags(add_flags(&[Flags::InRoom]), vec![nick]).send_all());
    90                     response.add(ClientFlags(add_flags(&[Flags::InRoom]), vec![nick]).send_all());
       
    91                     let nicks = server.collect_nicks(|(_, c)| c.room_id == Some(room_id));
    96                     response.add(RoomJoined(nicks).send_self());
    92                     response.add(RoomJoined(nicks).send_self());
    97 
    93 
    98                     let room = &server.rooms[room_id];
    94                     let room = &server.rooms[room_id];
    99 
    95 
   100                     if !room.greeting.is_empty() {
    96                     if !room.greeting.is_empty() {