use byteorder::{LittleEndian, ReadBytesExt}; use serde::Serialize; use serde_with::serde_as; use crate::result::Result; #[serde_as] #[derive(Debug, Serialize)] pub enum EntityMethod { /// TODO: team composition. Subtype2F(#[serde_as(as = "serde_with::hex::Hex")] Vec), /// Default variant when subtype is not known. Unknown { sub_type: u32, /// Whole packet payload (including the sub-type). #[serde_as(as = "serde_with::hex::Hex")] payload: Vec, }, } impl EntityMethod { pub fn new(payload: Vec) -> Result { let mut reader = payload.as_slice(); reader.read_u32::()?; let sub_type = reader.read_u32::()?; let this = match sub_type { 0x2F => Self::Subtype2F(payload), _ => Self::Unknown { sub_type, payload }, }; Ok(this) } }