equal
deleted
inserted
replaced
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 { |