rust/hedgewars-server/src/handlers/common.rs
changeset 16029 d9f1b239b6d7
parent 16015 cd8392e52165
child 16030 8ba2b5007c29
equal deleted inserted replaced
16028:d73e6cb37f83 16029:d9f1b239b6d7
   209 
   209 
   210         if info.is_paused {
   210         if info.is_paused {
   211             response.add(ForwardEngineMessage(vec![to_engine_msg(once(b'I'))]).send_self());
   211             response.add(ForwardEngineMessage(vec![to_engine_msg(once(b'I'))]).send_self());
   212         }
   212         }
   213 
   213 
   214         for (_, original_team) in &info.original_teams {
   214         for original_team in &info.original_teams {
   215             if let Some(team) = room.find_team(|team| team.name == original_team.name) {
   215             if let Some(team) = room.find_team(|team| team.name == original_team.info.name) {
   216                 if team != original_team {
   216                 if *team != original_team.info {
   217                     response.add(TeamRemove(original_team.name.clone()).send_self());
   217                     response.add(TeamRemove(original_team.info.name.clone()).send_self());
   218                     response.add(TeamAdd(team.to_protocol()).send_self());
   218                     response.add(TeamAdd(team.to_protocol()).send_self());
   219                 }
   219                 }
   220             } else {
   220             } else {
   221                 response.add(TeamRemove(original_team.name.clone()).send_self());
   221                 response.add(TeamRemove(original_team.info.name.clone()).send_self());
   222             }
   222             }
   223         }
   223         }
   224 
   224 
   225         for (_, team) in &room.teams {
   225         for team in &room.teams {
   226             if !info.original_teams.iter().any(|(_, t)| t.name == team.name) {
   226             if !info
   227                 response.add(TeamAdd(team.to_protocol()).send_self());
   227                 .original_teams
       
   228                 .iter()
       
   229                 .any(|original_team| original_team.info.name == team.info.name)
       
   230             {
       
   231                 response.add(TeamAdd(team.info.to_protocol()).send_self());
   228             }
   232             }
   229         }
   233         }
   230 
   234 
   231         get_room_config_impl(room.config(), Destination::ToSelf, response);
   235         get_room_config_impl(room.config(), Destination::ToSelf, response);
   232     }
   236     }
   401     let current_teams = match room.game_info {
   405     let current_teams = match room.game_info {
   402         Some(ref info) => &info.original_teams,
   406         Some(ref info) => &info.original_teams,
   403         None => &room.teams,
   407         None => &room.teams,
   404     };
   408     };
   405 
   409 
   406     get_teams(current_teams.iter().map(|(_, t)| t), destination, response);
   410     get_teams(
       
   411         current_teams.iter().map(|team| &team.info),
       
   412         destination,
       
   413         response,
       
   414     );
   407 }
   415 }
   408 
   416 
   409 pub fn get_room_flags(
   417 pub fn get_room_flags(
   410     server: &HwServer,
   418     server: &HwServer,
   411     room_id: RoomId,
   419     room_id: RoomId,