rust/hedgewars-server/src/server/handlers/common.rs
changeset 14697 f64e21f164a5
parent 14696 8a45c90f4580
child 14781 01f8ab45f806
equal deleted inserted replaced
14696:8a45c90f4580 14697:f64e21f164a5
    13     utils::to_engine_msg,
    13     utils::to_engine_msg,
    14 };
    14 };
    15 
    15 
    16 use super::Response;
    16 use super::Response;
    17 
    17 
    18 use rand::{self, thread_rng, Rng};
    18 use rand::{self, seq::SliceRandom, thread_rng, Rng};
    19 use std::{iter::once, mem::replace};
    19 use std::{iter::once, mem::replace};
    20 
    20 
    21 pub fn rnd_reply(options: &[String]) -> HWServerMessage {
    21 pub fn rnd_reply(options: &[String]) -> HWServerMessage {
    22     let mut rng = thread_rng();
    22     let mut rng = thread_rng();
       
    23 
    23     let reply = if options.is_empty() {
    24     let reply = if options.is_empty() {
    24         (*rng.choose(&["heads", "tails"]).unwrap()).to_owned()
    25         (*&["heads", "tails"].choose(&mut rng).unwrap()).to_string()
    25     } else {
    26     } else {
    26         rng.choose(&options).unwrap().clone()
    27         options.choose(&mut rng).unwrap().clone()
    27     };
    28     };
    28 
    29 
    29     ChatMsg {
    30     ChatMsg {
    30         nick: "[random]".to_owned(),
    31         nick: "[random]".to_string(),
    31         msg: reply.clone(),
    32         msg: reply,
    32     }
    33     }
    33 }
    34 }
    34 
    35 
    35 pub fn process_login(server: &mut HWServer, response: &mut Response) {
    36 pub fn process_login(server: &mut HWServer, response: &mut Response) {
    36     let client_id = response.client_id();
    37     let client_id = response.client_id();
   216 }
   217 }
   217 
   218 
   218 pub fn remove_client(server: &mut HWServer, response: &mut Response, msg: String) {
   219 pub fn remove_client(server: &mut HWServer, response: &mut Response, msg: String) {
   219     let client_id = response.client_id();
   220     let client_id = response.client_id();
   220     let client = &mut server.clients[client_id];
   221     let client = &mut server.clients[client_id];
   221     let (nick, room_id) = (client.nick.clone(), client.room_id);
   222     let nick = client.nick.clone();
   222 
   223 
   223     exit_room(server, client_id, response, &msg);
   224     exit_room(server, client_id, response, &msg);
   224 
   225 
   225     server.remove_client(client_id);
   226     server.remove_client(client_id);
   226 
   227 
   292     server: &mut HWServer,
   293     server: &mut HWServer,
   293     room_id: RoomId,
   294     room_id: RoomId,
   294     response: &mut Response,
   295     response: &mut Response,
   295     kind: VoteType,
   296     kind: VoteType,
   296 ) {
   297 ) {
   297     let client_id = response.client_id;
       
   298 
       
   299     match kind {
   298     match kind {
   300         VoteType::Kick(nick) => {
   299         VoteType::Kick(nick) => {
   301             if let Some(client) = server.find_client(&nick) {
   300             if let Some(client) = server.find_client(&nick) {
   302                 if client.room_id == Some(room_id) {
   301                 if client.room_id == Some(room_id) {
   303                     let id = client.id;
   302                     let id = client.id;