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 } |