rust/hedgewars-server/src/server/handlers/common.rs
changeset 14798 d11481978633
parent 14791 b889d9e1115f
child 14799 e41131607167
equal deleted inserted replaced
14797:ce2268ae261f 14798:d11481978633
   144     client: &mut HWClient,
   144     client: &mut HWClient,
   145     room: &mut HWRoom,
   145     room: &mut HWRoom,
   146     response: &mut Response,
   146     response: &mut Response,
   147     msg: &str,
   147     msg: &str,
   148 ) {
   148 ) {
   149     if room.players_number > 1 || room.is_fixed() {
   149     room.players_number -= 1;
   150         room.players_number -= 1;
   150     if room.players_number > 0 || room.is_fixed() {
   151         if client.is_ready() && room.ready_players_number > 0 {
   151         if client.is_ready() && room.ready_players_number > 0 {
   152             room.ready_players_number -= 1;
   152             room.ready_players_number -= 1;
   153         }
   153         }
   154 
   154 
   155         let team_names: Vec<_> = room
   155         let team_names: Vec<_> = room
   258     if let Some(room_id) = client.room_id {
   258     if let Some(room_id) = client.room_id {
   259         let room = &mut server.rooms[room_id];
   259         let room = &mut server.rooms[room_id];
   260 
   260 
   261         remove_client_from_room(client, room, response, msg);
   261         remove_client_from_room(client, room, response, msg);
   262 
   262 
   263         if !room.is_fixed() && room.master_id == None {
   263         if !room.is_fixed() {
   264             let new_master_id = server.room_clients(room_id).next();
   264             if room.players_number == 0 {
   265             if let Some(new_master_id) = new_master_id {
   265                 server.rooms.remove(room_id);
   266                 let new_master_nick = server.clients[new_master_id].nick.clone();
   266             } else if room.master_id == None {
   267                 let room = &mut server.rooms[room_id];
   267                 let new_master_id = server.room_clients(room_id).next();
   268                 room.master_id = Some(new_master_id);
   268                 if let Some(new_master_id) = new_master_id {
   269                 server.clients[new_master_id].set_is_master(true);
   269                     let new_master_nick = server.clients[new_master_id].nick.clone();
   270 
   270                     let room = &mut server.rooms[room_id];
   271                 if room.protocol_number < 42 {
   271                     room.master_id = Some(new_master_id);
   272                     room.name = new_master_nick.clone();
   272                     server.clients[new_master_id].set_is_master(true);
       
   273 
       
   274                     if room.protocol_number < 42 {
       
   275                         room.name = new_master_nick.clone();
       
   276                     }
       
   277 
       
   278                     room.set_join_restriction(false);
       
   279                     room.set_team_add_restriction(false);
       
   280                     room.set_unregistered_players_restriction(true);
       
   281 
       
   282                     response.add(
       
   283                         ClientFlags(add_flags(&[Flags::RoomMaster]), vec![new_master_nick])
       
   284                             .send_all()
       
   285                             .in_room(room.id),
       
   286                     );
   273                 }
   287                 }
   274 
       
   275                 room.set_join_restriction(false);
       
   276                 room.set_team_add_restriction(false);
       
   277                 room.set_unregistered_players_restriction(true);
       
   278 
       
   279                 response.add(
       
   280                     ClientFlags(add_flags(&[Flags::RoomMaster]), vec![new_master_nick])
       
   281                         .send_all()
       
   282                         .in_room(room.id),
       
   283                 );
       
   284             }
   288             }
   285         }
   289         }
   286     }
   290     }
   287 }
   291 }
   288 
   292