rust/hedgewars-server/src/server/client.rs
changeset 14457 98ef2913ec73
parent 14415 06672690d71b
child 14693 6a2e13e36b7f
equal deleted inserted replaced
14456:a077aac9df01 14457:98ef2913ec73
     1 use super::coretypes::ClientId;
     1 use super::coretypes::ClientId;
     2 use bitflags::*;
     2 use bitflags::*;
     3 
     3 
     4 bitflags!{
     4 bitflags! {
     5     pub struct ClientFlags: u8 {
     5     pub struct ClientFlags: u8 {
     6         const IS_ADMIN = 0b0000_0001;
     6         const IS_ADMIN = 0b0000_0001;
     7         const IS_MASTER = 0b0000_0010;
     7         const IS_MASTER = 0b0000_0010;
     8         const IS_READY = 0b0000_0100;
     8         const IS_READY = 0b0000_0100;
     9         const IS_IN_GAME = 0b0000_1000;
     9         const IS_IN_GAME = 0b0000_1000;
    23     pub server_salt: String,
    23     pub server_salt: String,
    24     pub protocol_number: u16,
    24     pub protocol_number: u16,
    25     pub flags: ClientFlags,
    25     pub flags: ClientFlags,
    26     pub teams_in_game: u8,
    26     pub teams_in_game: u8,
    27     pub team_indices: Vec<u8>,
    27     pub team_indices: Vec<u8>,
    28     pub clan: Option<u8>
    28     pub clan: Option<u8>,
    29 }
    29 }
    30 
    30 
    31 impl HWClient {
    31 impl HWClient {
    32     pub fn new(id: ClientId, salt: String) -> HWClient {
    32     pub fn new(id: ClientId, salt: String) -> HWClient {
    33         HWClient {
    33         HWClient {
    42             team_indices: Vec::new(),
    42             team_indices: Vec::new(),
    43             clan: None,
    43             clan: None,
    44         }
    44         }
    45     }
    45     }
    46 
    46 
    47     fn contains(& self, mask: ClientFlags) -> bool {
    47     fn contains(&self, mask: ClientFlags) -> bool {
    48         self.flags.contains(mask)
    48         self.flags.contains(mask)
    49     }
    49     }
    50 
    50 
    51     fn set(&mut self, mask: ClientFlags, value: bool) {
    51     fn set(&mut self, mask: ClientFlags, value: bool) {
    52         self.flags.set(mask, value);
    52         self.flags.set(mask, value);
    53     }
    53     }
    54 
    54 
    55     pub fn is_admin(&self)-> bool { self.contains(ClientFlags::IS_ADMIN) }
    55     pub fn is_admin(&self) -> bool {
    56     pub fn is_master(&self)-> bool { self.contains(ClientFlags::IS_MASTER) }
    56         self.contains(ClientFlags::IS_ADMIN)
    57     pub fn is_ready(&self)-> bool { self.contains(ClientFlags::IS_READY) }
    57     }
    58     pub fn is_in_game(&self)-> bool { self.contains(ClientFlags::IS_IN_GAME) }
    58     pub fn is_master(&self) -> bool {
    59     pub fn is_joined_mid_game(&self)-> bool { self.contains(ClientFlags::IS_JOINED_MID_GAME) }
    59         self.contains(ClientFlags::IS_MASTER)
    60     pub fn is_checker(&self)-> bool { self.contains(ClientFlags::IS_CHECKER) }
    60     }
       
    61     pub fn is_ready(&self) -> bool {
       
    62         self.contains(ClientFlags::IS_READY)
       
    63     }
       
    64     pub fn is_in_game(&self) -> bool {
       
    65         self.contains(ClientFlags::IS_IN_GAME)
       
    66     }
       
    67     pub fn is_joined_mid_game(&self) -> bool {
       
    68         self.contains(ClientFlags::IS_JOINED_MID_GAME)
       
    69     }
       
    70     pub fn is_checker(&self) -> bool {
       
    71         self.contains(ClientFlags::IS_CHECKER)
       
    72     }
    61 
    73 
    62     pub fn set_is_admin(&mut self, value: bool) { self.set(ClientFlags::IS_ADMIN, value) }
    74     pub fn set_is_admin(&mut self, value: bool) {
    63     pub fn set_is_master(&mut self, value: bool) { self.set(ClientFlags::IS_MASTER, value) }
    75         self.set(ClientFlags::IS_ADMIN, value)
    64     pub fn set_is_ready(&mut self, value: bool) { self.set(ClientFlags::IS_READY, value) }
    76     }
    65     pub fn set_is_in_game(&mut self, value: bool) { self.set(ClientFlags::IS_IN_GAME, value) }
    77     pub fn set_is_master(&mut self, value: bool) {
    66     pub fn set_is_joined_mid_game(&mut self, value: bool) { self.set(ClientFlags::IS_JOINED_MID_GAME, value) }
    78         self.set(ClientFlags::IS_MASTER, value)
    67     pub fn set_is_checker(&mut self, value: bool) { self.set(ClientFlags::IS_CHECKER, value) }
    79     }
       
    80     pub fn set_is_ready(&mut self, value: bool) {
       
    81         self.set(ClientFlags::IS_READY, value)
       
    82     }
       
    83     pub fn set_is_in_game(&mut self, value: bool) {
       
    84         self.set(ClientFlags::IS_IN_GAME, value)
       
    85     }
       
    86     pub fn set_is_joined_mid_game(&mut self, value: bool) {
       
    87         self.set(ClientFlags::IS_JOINED_MID_GAME, value)
       
    88     }
       
    89     pub fn set_is_checker(&mut self, value: bool) {
       
    90         self.set(ClientFlags::IS_CHECKER, value)
       
    91     }
    68 }
    92 }