rust/hedgewars-server/src/core/server.rs
changeset 15540 479911540e17
parent 15536 a798e6441a36
child 15541 d122b65bdf6f
equal deleted inserted replaced
15539:d8326878e933 15540:479911540e17
   984                 .client_teams(client.id)
   984                 .client_teams(client.id)
   985                 .map(|t| t.name.clone())
   985                 .map(|t| t.name.clone())
   986                 .collect();
   986                 .collect();
   987 
   987 
   988             if let Some(ref mut info) = room.game_info {
   988             if let Some(ref mut info) = room.game_info {
       
   989                 info.teams_in_game -= team_names.len() as u8;
       
   990 
   989                 for team_name in &team_names {
   991                 for team_name in &team_names {
   990                     let remove_msg =
   992                     let remove_msg =
   991                         utils::to_engine_msg(std::iter::once(b'F').chain(team_name.bytes()));
   993                         utils::to_engine_msg(std::iter::once(b'F').chain(team_name.bytes()));
   992                     if let Some(m) = &info.sync_msg {
   994                     if let Some(m) = &info.sync_msg {
   993                         info.msg_log.push(m.clone());
   995                         info.msg_log.push(m.clone());
  1102 
  1104 
  1103     client.room_id = Some(room.id);
  1105     client.room_id = Some(room.id);
  1104     client.set_is_joined_mid_game(room.game_info.is_some());
  1106     client.set_is_joined_mid_game(room.game_info.is_some());
  1105     client.set_is_in_game(room.game_info.is_some());
  1107     client.set_is_in_game(room.game_info.is_some());
  1106 
  1108 
  1107     let teams = room.client_teams(client.id);
  1109     if let Some(ref mut info) = room.game_info {
  1108     client.teams_in_game = teams.clone().count() as u8;
  1110         let teams = info.client_teams(client.id);
  1109     client.clan = teams.clone().next().map(|t| t.color);
  1111         client.teams_in_game = teams.clone().count() as u8;
  1110     let team_names: Vec<_> = teams.map(|t| t.name.clone()).collect();
  1112         client.clan = teams.clone().next().map(|t| t.color);
  1111 
  1113         let team_names: Vec<_> = teams.map(|t| t.name.clone()).collect();
  1112     match room.game_info {
  1114 
  1113         Some(ref mut info) if !team_names.is_empty() => {
  1115         if !team_names.is_empty() {
  1114             info.left_teams.retain(|name| !team_names.contains(&name))
  1116             info.left_teams.retain(|name| !team_names.contains(&name));
  1115         }
  1117             info.teams_in_game += team_names.len() as u8;
  1116         _ => (),
  1118             room.teams = info
  1117     }
  1119                 .teams_at_start
  1118 }
  1120                 .iter()
       
  1121                 .filter(|(_, t)| !team_names.contains(&t.name))
       
  1122                 .cloned()
       
  1123                 .collect();
       
  1124         }
       
  1125     }
       
  1126 }