rust/hedgewars-server/src/server/handlers/lobby.rs
changeset 14787 0e64acbc3f8b
parent 14785 a1077e8d26f4
child 14789 18240b308505
equal deleted inserted replaced
14786:8ecdb5c6bb2a 14787:0e64acbc3f8b
     4 use crate::{
     4 use crate::{
     5     protocol::messages::{
     5     protocol::messages::{
     6         add_flags, remove_flags, HWProtocolMessage, HWServerMessage::*, ProtocolFlags as Flags,
     6         add_flags, remove_flags, HWProtocolMessage, HWServerMessage::*, ProtocolFlags as Flags,
     7     },
     7     },
     8     server::{
     8     server::{
       
     9         client::HWClient,
     9         core::HWServer,
    10         core::HWServer,
    10         coretypes::{ClientId, ServerVar},
    11         coretypes::{ClientId, ServerVar},
    11     },
    12     },
    12     utils::is_name_illegal,
    13     utils::is_name_illegal,
    13 };
    14 };
    81                         .send_self(),
    82                         .send_self(),
    82                     );
    83                     );
    83                 } else if room.players_number == u8::max_value() {
    84                 } else if room.players_number == u8::max_value() {
    84                     response.add(Warning("This room is already full".to_string()).send_self());
    85                     response.add(Warning("This room is already full".to_string()).send_self());
    85                 } else if let Some(room_id) = room_id {
    86                 } else if let Some(room_id) = room_id {
    86                     let nick = client.nick.clone();
    87                     super::common::enter_room(server, client_id, room_id, response);
    87                     server.move_to_room(client_id, room_id);
       
    88 
       
    89                     response.add(RoomJoined(vec![nick.clone()]).send_all().in_room(room_id));
       
    90                     response.add(ClientFlags(add_flags(&[Flags::InRoom]), vec![nick]).send_all());
       
    91                     let nicks = server.collect_nicks(|(_, c)| c.room_id == Some(room_id));
       
    92                     response.add(RoomJoined(nicks).send_self());
       
    93 
       
    94                     let room = &server.rooms[room_id];
       
    95 
       
    96                     if !room.greeting.is_empty() {
       
    97                         response.add(
       
    98                             ChatMsg {
       
    99                                 nick: "[greeting]".to_string(),
       
   100                                 msg: room.greeting.clone(),
       
   101                             }
       
   102                             .send_self(),
       
   103                         );
       
   104                     }
       
   105                 }
    88                 }
   106             } else {
    89             } else {
   107                 response.add(Warning("No such room.".to_string()).send_self());
    90                 response.add(Warning("No such room.".to_string()).send_self());
       
    91             }
       
    92         }
       
    93         Follow(nick) => {
       
    94             if let Some(HWClient {
       
    95                 room_id: Some(room_id),
       
    96                 ..
       
    97             }) = server.find_client(&nick)
       
    98             {
       
    99                 let room = &server.rooms[*room_id];
       
   100                 response.add(Joining(room.name.clone()).send_self());
       
   101                 super::common::enter_room(server, client_id, *room_id, response);
   108             }
   102             }
   109         }
   103         }
   110         SetServerVar(var) => {
   104         SetServerVar(var) => {
   111             if !server.clients[client_id].is_admin() {
   105             if !server.clients[client_id].is_admin() {
   112                 response.add(Warning("Access denied.".to_string()).send_self());
   106                 response.add(Warning("Access denied.".to_string()).send_self());