#![allow(non_camel_case_types)]
#![allow(non_upper_case_globals)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[repr(i32)]
pub enum EPersonaStateFlag {
    HasRichPresence = 1,
    InJoinableGame = 2,
    Golden = 4,
    RemotePlayTogether = 8,
    ClientTypeWeb = 256,
    ClientTypeMobile = 512,
    ClientTypeTenfoot = 1024,
    ClientTypeVR = 2048,
    LaunchTypeGamepad = 4096,
    LaunchTypeCompatTool = 8192,
}

impl EPersonaStateFlag {
    pub fn from_i32(val: i32) -> Option<Self> {
        match val {
            x if x == Self::HasRichPresence as i32 => Some(Self::HasRichPresence),
            x if x == Self::InJoinableGame as i32 => Some(Self::InJoinableGame),
            x if x == Self::Golden as i32 => Some(Self::Golden),
            x if x == Self::RemotePlayTogether as i32 => Some(Self::RemotePlayTogether),
            x if x == Self::ClientTypeWeb as i32 => Some(Self::ClientTypeWeb),
            x if x == Self::ClientTypeMobile as i32 => Some(Self::ClientTypeMobile),
            x if x == Self::ClientTypeTenfoot as i32 => Some(Self::ClientTypeTenfoot),
            x if x == Self::ClientTypeVR as i32 => Some(Self::ClientTypeVR),
            x if x == Self::LaunchTypeGamepad as i32 => Some(Self::LaunchTypeGamepad),
            x if x == Self::LaunchTypeCompatTool as i32 => Some(Self::LaunchTypeCompatTool),
            _ => None,
        }
    }
}
