rust/hedgewars-server/src/core/server.rs
changeset 16017 0b2e0a7d0431
parent 16015 cd8392e52165
child 16018 fb389df02e3e
equal deleted inserted replaced
16016:b26c3497ea85 16017:0b2e0a7d0431
   618         let room_id = self.room_id;
   618         let room_id = self.room_id;
   619         HwRoomControl::new(self.server, client_id).filter(|c| c.room_id == room_id)
   619         HwRoomControl::new(self.server, client_id).filter(|c| c.room_id == room_id)
   620     }
   620     }
   621 
   621 
   622     fn remove_from_room(&mut self, client_id: ClientId) -> LeaveRoomResult {
   622     fn remove_from_room(&mut self, client_id: ClientId) -> LeaveRoomResult {
   623         let Some((client, room)) = self.server.client_and_room_mut(client_id);
   623         let (client, room) = self.server.client_and_room_mut(client_id).expect("Caller should have ensured the client is in this room");
   624         room.players_number -= 1;
   624         room.players_number -= 1;
   625         client.room_id = None;
   625         client.room_id = None;
   626 
   626 
   627         let is_empty = room.players_number == 0;
   627         let is_empty = room.players_number == 0;
   628         let is_fixed = room.is_fixed();
   628         let is_fixed = room.is_fixed();
   799                 voting.votes.push((client_id, vote.is_pro));
   799                 voting.votes.push((client_id, vote.is_pro));
   800                 let i = voting.votes.iter();
   800                 let i = voting.votes.iter();
   801                 let pro = i.clone().filter(|(_, v)| *v).count();
   801                 let pro = i.clone().filter(|(_, v)| *v).count();
   802                 let contra = i.filter(|(_, v)| !*v).count();
   802                 let contra = i.filter(|(_, v)| !*v).count();
   803                 let success_quota = voting.voters.len() / 2 + 1;
   803                 let success_quota = voting.voters.len() / 2 + 1;
   804                 
   804 
   805                 if vote.is_forced && vote.is_pro || pro >= success_quota {
   805                 if vote.is_forced && vote.is_pro || pro >= success_quota {
   806                     let voting = self.room_mut().voting.take().unwrap();
   806                     let voting = self.room_mut().voting.take().unwrap();
   807                     if let Some(effect) = self.apply_vote(voting.kind) {
   807                     if let Some(effect) = self.apply_vote(voting.kind) {
   808                         Ok(Succeeded(effect))
   808                         Ok(Succeeded(effect))
   809                     } else {
   809                     } else {