5 const IS_ADMIN = 0b0000_0001; |
5 const IS_ADMIN = 0b0000_0001; |
6 const IS_MASTER = 0b0000_0010; |
6 const IS_MASTER = 0b0000_0010; |
7 const IS_READY = 0b0000_0100; |
7 const IS_READY = 0b0000_0100; |
8 const IS_IN_GAME = 0b0000_1000; |
8 const IS_IN_GAME = 0b0000_1000; |
9 const IS_JOINED_MID_GAME = 0b0001_0000; |
9 const IS_JOINED_MID_GAME = 0b0001_0000; |
|
10 const IS_CHECKER = 0b0010_0000; |
10 |
11 |
11 const NONE = 0b0000_0000; |
12 const NONE = 0b0000_0000; |
12 const DEFAULT = Self::NONE.bits; |
13 const DEFAULT = Self::NONE.bits; |
13 } |
14 } |
14 } |
15 } |
15 |
16 |
16 pub struct HWClient { |
17 pub struct HWClient { |
17 pub id: ClientId, |
18 pub id: ClientId, |
18 pub room_id: Option<usize>, |
19 pub room_id: Option<usize>, |
19 pub nick: String, |
20 pub nick: String, |
|
21 pub web_password: String, |
|
22 pub server_salt: String, |
20 pub protocol_number: u16, |
23 pub protocol_number: u16, |
21 pub flags: ClientFlags, |
24 pub flags: ClientFlags, |
22 pub teams_in_game: u8, |
25 pub teams_in_game: u8, |
23 pub team_indices: Vec<u8>, |
26 pub team_indices: Vec<u8>, |
24 pub clan: Option<u8> |
27 pub clan: Option<u8> |
25 } |
28 } |
26 |
29 |
27 impl HWClient { |
30 impl HWClient { |
28 pub fn new(id: ClientId) -> HWClient { |
31 pub fn new(id: ClientId, salt: String) -> HWClient { |
29 HWClient { |
32 HWClient { |
30 id, |
33 id, |
31 room_id: None, |
34 room_id: None, |
32 nick: String::new(), |
35 nick: String::new(), |
|
36 web_password: String::new(), |
|
37 server_salt: salt, |
33 protocol_number: 0, |
38 protocol_number: 0, |
34 flags: ClientFlags::DEFAULT, |
39 flags: ClientFlags::DEFAULT, |
35 teams_in_game: 0, |
40 teams_in_game: 0, |
36 team_indices: Vec::new(), |
41 team_indices: Vec::new(), |
37 clan: None, |
42 clan: None, |
49 pub fn is_admin(&self)-> bool { self.contains(ClientFlags::IS_ADMIN) } |
54 pub fn is_admin(&self)-> bool { self.contains(ClientFlags::IS_ADMIN) } |
50 pub fn is_master(&self)-> bool { self.contains(ClientFlags::IS_MASTER) } |
55 pub fn is_master(&self)-> bool { self.contains(ClientFlags::IS_MASTER) } |
51 pub fn is_ready(&self)-> bool { self.contains(ClientFlags::IS_READY) } |
56 pub fn is_ready(&self)-> bool { self.contains(ClientFlags::IS_READY) } |
52 pub fn is_in_game(&self)-> bool { self.contains(ClientFlags::IS_IN_GAME) } |
57 pub fn is_in_game(&self)-> bool { self.contains(ClientFlags::IS_IN_GAME) } |
53 pub fn is_joined_mid_game(&self)-> bool { self.contains(ClientFlags::IS_JOINED_MID_GAME) } |
58 pub fn is_joined_mid_game(&self)-> bool { self.contains(ClientFlags::IS_JOINED_MID_GAME) } |
|
59 pub fn is_checker(&self)-> bool { self.contains(ClientFlags::IS_CHECKER) } |
54 |
60 |
55 pub fn set_is_admin(&mut self, value: bool) { self.set(ClientFlags::IS_ADMIN, value) } |
61 pub fn set_is_admin(&mut self, value: bool) { self.set(ClientFlags::IS_ADMIN, value) } |
56 pub fn set_is_master(&mut self, value: bool) { self.set(ClientFlags::IS_MASTER, value) } |
62 pub fn set_is_master(&mut self, value: bool) { self.set(ClientFlags::IS_MASTER, value) } |
57 pub fn set_is_ready(&mut self, value: bool) { self.set(ClientFlags::IS_READY, value) } |
63 pub fn set_is_ready(&mut self, value: bool) { self.set(ClientFlags::IS_READY, value) } |
58 pub fn set_is_in_game(&mut self, value: bool) { self.set(ClientFlags::IS_IN_GAME, value) } |
64 pub fn set_is_in_game(&mut self, value: bool) { self.set(ClientFlags::IS_IN_GAME, value) } |
59 pub fn set_is_joined_mid_game(&mut self, value: bool) { self.set(ClientFlags::IS_JOINED_MID_GAME, value) } |
65 pub fn set_is_joined_mid_game(&mut self, value: bool) { self.set(ClientFlags::IS_JOINED_MID_GAME, value) } |
|
66 pub fn set_is_checker(&mut self, value: bool) { self.set(ClientFlags::IS_CHECKER, value) } |
60 } |
67 } |