rust/hedgewars-server/src/handlers/actions.rs
changeset 15804 747278149393
parent 15543 02f648f7cbe1
equal deleted inserted replaced
15803:b06b33cf0a89 15804:747278149393
     2     core::{
     2     core::{
     3         client::HwClient,
     3         client::HwClient,
     4         room::HwRoom,
     4         room::HwRoom,
     5         room::{GameInfo, RoomFlags},
     5         room::{GameInfo, RoomFlags},
     6         server::HwServer,
     6         server::HwServer,
     7         types::{ClientId, GameCfg, RoomId, VoteType},
     7         types::{ClientId, RoomId},
     8     },
     8     },
     9     protocol::messages::{server_chat, HwProtocolMessage, HwServerMessage, HwServerMessage::*},
       
    10     utils::to_engine_msg,
     9     utils::to_engine_msg,
       
    10 };
       
    11 use hedgewars_network_protocol::{
       
    12     messages::{server_chat, HwProtocolMessage, HwServerMessage, HwServerMessage::*},
       
    13     types::{GameCfg, VoteType},
    11 };
    14 };
    12 use rand::{distributions::Uniform, thread_rng, Rng};
    15 use rand::{distributions::Uniform, thread_rng, Rng};
    13 use std::{io, io::Write, iter::once, mem::replace};
    16 use std::{io, io::Write, iter::once, mem::replace};
    14 
    17 
    15 #[derive(Clone)]
    18 #[derive(Clone)]
    99         }
   102         }
   100         self
   103         self
   101     }
   104     }
   102 }
   105 }
   103 
   106 
   104 impl HwServerMessage {
   107 pub trait ToPendingMessage {
   105     pub fn send(self, client_id: ClientId) -> PendingMessage {
   108     fn send(self, client_id: ClientId) -> PendingMessage;
       
   109     fn send_many(self, client_ids: Vec<ClientId>) -> PendingMessage;
       
   110     fn send_self(self) -> PendingMessage;
       
   111     fn send_all(self) -> PendingMessage;
       
   112     fn send_to_destination(self, destination: Destination) -> PendingMessage;
       
   113 }
       
   114 
       
   115 impl ToPendingMessage for HwServerMessage {
       
   116     fn send(self, client_id: ClientId) -> PendingMessage {
   106         PendingMessage::send(self, client_id)
   117         PendingMessage::send(self, client_id)
   107     }
   118     }
   108     pub fn send_many(self, client_ids: Vec<ClientId>) -> PendingMessage {
   119     fn send_many(self, client_ids: Vec<ClientId>) -> PendingMessage {
   109         PendingMessage::send_many(self, client_ids)
   120         PendingMessage::send_many(self, client_ids)
   110     }
   121     }
   111     pub fn send_self(self) -> PendingMessage {
   122     fn send_self(self) -> PendingMessage {
   112         PendingMessage::send_self(self)
   123         PendingMessage::send_self(self)
   113     }
   124     }
   114     pub fn send_all(self) -> PendingMessage {
   125     fn send_all(self) -> PendingMessage {
   115         PendingMessage::send_all(self)
   126         PendingMessage::send_all(self)
   116     }
   127     }
   117     pub fn send_to_destination(self, destination: Destination) -> PendingMessage {
   128     fn send_to_destination(self, destination: Destination) -> PendingMessage {
   118         PendingMessage {
   129         PendingMessage {
   119             destination,
   130             destination,
   120             message: self,
   131             message: self,
   121         }
   132         }
   122     }
   133     }