1 use super::{common::rnd_reply, strings::*}; |
1 use super::{common::rnd_reply, strings::*}; |
2 use crate::core::room::GameInfo; |
2 use crate::core::room::GameInfo; |
3 use crate::core::server::{AddTeamError, SetTeamCountError}; |
3 use crate::core::server::{AddTeamError, SetTeamCountError}; |
|
4 use crate::handlers::actions::ToPendingMessage; |
4 use crate::{ |
5 use crate::{ |
5 core::{ |
6 core::{ |
6 room::{HwRoom, RoomFlags, MAX_TEAMS_IN_ROOM}, |
7 room::{HwRoom, RoomFlags, MAX_TEAMS_IN_ROOM}, |
7 server::{ |
8 server::{ |
8 ChangeMasterError, ChangeMasterResult, HwRoomControl, HwServer, LeaveRoomResult, |
9 ChangeMasterError, ChangeMasterResult, HwRoomControl, HwServer, LeaveRoomResult, |
9 ModifyTeamError, StartGameError, |
10 ModifyTeamError, StartGameError, |
10 }, |
11 }, |
11 types, |
12 types::{ClientId, RoomId, Voting}, |
12 types::{ClientId, GameCfg, RoomId, VoteType, Voting, MAX_HEDGEHOGS_PER_TEAM}, |
|
13 }, |
|
14 protocol::messages::{ |
|
15 add_flags, remove_flags, server_chat, HwProtocolMessage, HwServerMessage::*, |
|
16 ProtocolFlags as Flags, |
|
17 }, |
13 }, |
18 utils::{is_name_illegal, to_engine_msg}, |
14 utils::{is_name_illegal, to_engine_msg}, |
19 }; |
15 }; |
20 use base64::{decode, encode}; |
16 use base64::{decode, encode}; |
|
17 use hedgewars_network_protocol::{ |
|
18 messages::{ |
|
19 add_flags, remove_flags, server_chat, HwProtocolMessage, HwServerMessage::*, |
|
20 ProtocolFlags as Flags, |
|
21 }, |
|
22 types, |
|
23 types::{GameCfg, VoteType, MAX_HEDGEHOGS_PER_TEAM}, |
|
24 }; |
21 use log::*; |
25 use log::*; |
22 use std::{cmp::min, iter::once, mem::swap}; |
26 use std::{cmp::min, iter::once, mem::swap}; |
23 |
27 |
24 #[derive(Clone)] |
28 #[derive(Clone)] |
25 struct ByMsg<'a> { |
29 struct ByMsg<'a> { |
85 } |
89 } |
86 ) |
90 ) |
87 } |
91 } |
88 |
92 |
89 fn room_message_flag(msg: &HwProtocolMessage) -> RoomFlags { |
93 fn room_message_flag(msg: &HwProtocolMessage) -> RoomFlags { |
90 use crate::protocol::messages::HwProtocolMessage::*; |
94 use hedgewars_network_protocol::messages::HwProtocolMessage::*; |
91 match msg { |
95 match msg { |
92 ToggleRestrictJoin => RoomFlags::RESTRICTED_JOIN, |
96 ToggleRestrictJoin => RoomFlags::RESTRICTED_JOIN, |
93 ToggleRestrictTeams => RoomFlags::RESTRICTED_TEAM_ADD, |
97 ToggleRestrictTeams => RoomFlags::RESTRICTED_TEAM_ADD, |
94 ToggleRegisteredOnly => RoomFlags::REGISTRATION_REQUIRED, |
98 ToggleRegisteredOnly => RoomFlags::REGISTRATION_REQUIRED, |
95 _ => RoomFlags::empty(), |
99 _ => RoomFlags::empty(), |
102 message: HwProtocolMessage, |
106 message: HwProtocolMessage, |
103 ) { |
107 ) { |
104 let (client, room) = room_control.get(); |
108 let (client, room) = room_control.get(); |
105 let (client_id, room_id) = (client.id, room.id); |
109 let (client_id, room_id) = (client.id, room.id); |
106 |
110 |
107 use crate::protocol::messages::HwProtocolMessage::*; |
111 use hedgewars_network_protocol::messages::HwProtocolMessage::*; |
108 match message { |
112 match message { |
109 Part(msg) => { |
113 Part(msg) => { |
110 let msg = match msg { |
114 let msg = match msg { |
111 Some(s) => format!("part: {}", s), |
115 Some(s) => format!("part: {}", s), |
112 None => "part".to_string(), |
116 None => "part".to_string(), |