#[derive(Debug, Clone, Copy, PartialEq, Eq, Default, Hash)]
#[repr(u8)]
pub enum Universe {
#[default]
Invalid = 0,
Public = 1,
Beta = 2,
Internal = 3,
Dev = 4,
}
impl Universe {
pub fn from_u8(value: u8) -> Self {
match value {
1 => Universe::Public,
2 => Universe::Beta,
3 => Universe::Internal,
4 => Universe::Dev,
_ => Universe::Invalid,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default, Hash)]
#[repr(u8)]
pub enum AccountType {
#[default]
Invalid = 0,
Individual = 1,
Multiseat = 2,
GameServer = 3,
AnonGameServer = 4,
Pending = 5,
ContentServer = 6,
Clan = 7,
Chat = 8,
P2PSuperSeeder = 9,
AnonUser = 10,
}
impl AccountType {
pub fn from_u8(value: u8) -> Self {
match value {
1 => AccountType::Individual,
2 => AccountType::Multiseat,
3 => AccountType::GameServer,
4 => AccountType::AnonGameServer,
5 => AccountType::Pending,
6 => AccountType::ContentServer,
7 => AccountType::Clan,
8 => AccountType::Chat,
9 => AccountType::P2PSuperSeeder,
10 => AccountType::AnonUser,
_ => AccountType::Invalid,
}
}
pub fn to_char(self) -> char {
match self {
AccountType::Invalid => 'I',
AccountType::Individual => 'U',
AccountType::Multiseat => 'M',
AccountType::GameServer => 'G',
AccountType::AnonGameServer => 'A',
AccountType::Pending => 'P',
AccountType::ContentServer => 'C',
AccountType::Clan => 'g',
AccountType::Chat => 'T',
AccountType::P2PSuperSeeder => 'i', AccountType::AnonUser => 'a',
}
}
pub fn from_char(c: char) -> Self {
match c {
'I' => AccountType::Invalid,
'U' => AccountType::Individual,
'M' => AccountType::Multiseat,
'G' => AccountType::GameServer,
'A' => AccountType::AnonGameServer,
'P' => AccountType::Pending,
'C' => AccountType::ContentServer,
'g' => AccountType::Clan,
'T' => AccountType::Chat,
'a' => AccountType::AnonUser,
_ => AccountType::Invalid,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[repr(u32)]
pub enum Instance {
All = 0,
Desktop = 1,
Console = 2,
Web = 4,
}
pub mod masks {
pub const ACCOUNT_ID_MASK: u64 = 0xFFFFFFFF;
pub const ACCOUNT_INSTANCE_MASK: u32 = 0x000FFFFF;
}
pub mod chat_instance_flags {
use super::masks::ACCOUNT_INSTANCE_MASK;
pub const CLAN: u32 = (ACCOUNT_INSTANCE_MASK + 1) >> 1; pub const LOBBY: u32 = (ACCOUNT_INSTANCE_MASK + 1) >> 2; pub const MMS_LOBBY: u32 = (ACCOUNT_INSTANCE_MASK + 1) >> 3; }