rust/hedgewars-server/src/server/handlers/lobby.rs
changeset 14782 50fcef24003f
parent 14694 25c564f77b7d
child 14783 b3adc030104b
equal deleted inserted replaced
14781:01f8ab45f806 14782:50fcef24003f
     1 use mio;
     1 use mio;
     2 
     2 
     3 use super::common::rnd_reply;
     3 use super::common::rnd_reply;
     4 use crate::{
     4 use crate::{
     5     protocol::messages::{HWProtocolMessage, HWServerMessage::*},
     5     protocol::messages::{
       
     6         add_flags, remove_flags, HWProtocolMessage, HWServerMessage::*, ProtocolFlags as Flags,
       
     7     },
     6     server::{core::HWServer, coretypes::ClientId},
     8     server::{core::HWServer, coretypes::ClientId},
     7     utils::is_name_illegal,
     9     utils::is_name_illegal,
     8 };
    10 };
     9 use log::*;
    11 use log::*;
    10 
    12 
    23                 response.add(
    25                 response.add(
    24                     Warning("A room with the same name already exists.".to_string()).send_self(),
    26                     Warning("A room with the same name already exists.".to_string()).send_self(),
    25                 );
    27                 );
    26             } else {
    28             } else {
    27                 let flags_msg = ClientFlags(
    29                 let flags_msg = ClientFlags(
    28                     "+hr".to_string(),
    30                     add_flags(&[Flags::RoomMaster, Flags::Ready]),
    29                     vec![server.clients[client_id].nick.clone()],
    31                     vec![server.clients[client_id].nick.clone()],
    30                 );
    32                 );
    31 
    33 
    32                 let room_id = server.create_room(client_id, name, password);
    34                 let room_id = server.create_room(client_id, name, password);
    33                 let room = &server.rooms[room_id];
    35                 let room = &server.rooms[room_id];
    38                         .send_all()
    40                         .send_all()
    39                         .with_protocol(room.protocol_number),
    41                         .with_protocol(room.protocol_number),
    40                 );
    42                 );
    41                 response.add(flags_msg.send_self());
    43                 response.add(flags_msg.send_self());
    42 
    44 
    43                 response.add(ClientFlags("+i".to_string(), vec![client.nick.clone()]).send_self());
    45                 response.add(
       
    46                     ClientFlags(add_flags(&[Flags::InRoom]), vec![client.nick.clone()]).send_self(),
       
    47                 );
    44             };
    48             };
    45         }
    49         }
    46         Chat(msg) => {
    50         Chat(msg) => {
    47             response.add(
    51             response.add(
    48                 ChatMsg {
    52                 ChatMsg {
    83                 } else if let Some(room_id) = room_id {
    87                 } else if let Some(room_id) = room_id {
    84                     let nick = client.nick.clone();
    88                     let nick = client.nick.clone();
    85                     server.move_to_room(client_id, room_id);
    89                     server.move_to_room(client_id, room_id);
    86 
    90 
    87                     response.add(RoomJoined(vec![nick.clone()]).send_all().in_room(room_id));
    91                     response.add(RoomJoined(vec![nick.clone()]).send_all().in_room(room_id));
    88                     response.add(ClientFlags("+i".to_string(), vec![nick]).send_all());
    92                     response.add(ClientFlags(add_flags(&[Flags::InRoom]), vec![nick]).send_all());
    89                     response.add(RoomJoined(nicks).send_self());
    93                     response.add(RoomJoined(nicks).send_self());
    90 
    94 
    91                     let room = &server.rooms[room_id];
    95                     let room = &server.rooms[room_id];
    92 
    96 
    93                     if !room.greeting.is_empty() {
    97                     if !room.greeting.is_empty() {