rust/hedgewars-server/src/handlers/inroom.rs
changeset 15804 747278149393
parent 15795 40929af15167
child 15989 fb389df02e3e
equal deleted inserted replaced
15803:b06b33cf0a89 15804:747278149393
     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(),