#![allow(non_camel_case_types)]
#![allow(non_upper_case_globals)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[repr(i32)]
pub enum EGCBaseMsg {
    SystemMessage = 4001,
    ReplicateConVars = 4002,
    ConVarUpdated = 4003,
    InQueue = 4008,
    InviteToParty = 4501,
    InvitationCreated = 4502,
    PartyInviteResponse = 4503,
    KickFromParty = 4504,
    LeaveParty = 4505,
    ServerAvailable = 4506,
    ClientConnectToServer = 4507,
    GameServerInfo = 4508,
    Error = 4509,
    UploadedToYouTube = 4510,
    LANServerAvailable = 4511,
}

impl EGCBaseMsg {
    pub fn from_i32(val: i32) -> Option<Self> {
        match val {
            x if x == Self::SystemMessage as i32 => Some(Self::SystemMessage),
            x if x == Self::ReplicateConVars as i32 => Some(Self::ReplicateConVars),
            x if x == Self::ConVarUpdated as i32 => Some(Self::ConVarUpdated),
            x if x == Self::InQueue as i32 => Some(Self::InQueue),
            x if x == Self::InviteToParty as i32 => Some(Self::InviteToParty),
            x if x == Self::InvitationCreated as i32 => Some(Self::InvitationCreated),
            x if x == Self::PartyInviteResponse as i32 => Some(Self::PartyInviteResponse),
            x if x == Self::KickFromParty as i32 => Some(Self::KickFromParty),
            x if x == Self::LeaveParty as i32 => Some(Self::LeaveParty),
            x if x == Self::ServerAvailable as i32 => Some(Self::ServerAvailable),
            x if x == Self::ClientConnectToServer as i32 => Some(Self::ClientConnectToServer),
            x if x == Self::GameServerInfo as i32 => Some(Self::GameServerInfo),
            x if x == Self::Error as i32 => Some(Self::Error),
            x if x == Self::UploadedToYouTube as i32 => Some(Self::UploadedToYouTube),
            x if x == Self::LANServerAvailable as i32 => Some(Self::LANServerAvailable),
            _ => None,
        }
    }
}
