equal
deleted
inserted
replaced
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() { |