mirror of
https://github.com/eigenein/wotbreplay-parser.git
synced 2026-10-21 18:37:00 +02:00
28 lines
683 B
Rust
28 lines
683 B
Rust
use byteorder::{LittleEndian, ReadBytesExt};
|
|||
|
|
use serde::Serialize;
|
||
|
|
|
||
|
|
use crate::result::Result;
|
||
|
|
|
||
|
|
#[derive(Debug, Serialize)]
|
||
|
|
pub enum EntityMethod {
|
||
|
|
/// TODO: team composition.
|
||
|
|
Subtype2F,
|
||
|
|
|
||
|
|
/// Default variant when subtype is not known.
|
||
|
|
Unknown { sub_type: u32, payload: Vec<u8> },
|
||
|
|
}
|
||
|
|
|
||
|
|
impl EntityMethod {
|
||
|
|
pub fn new(payload: Vec<u8>) -> Result<Self> {
|
||
|
|
let mut reader = payload.as_slice();
|
||
|
|
|
||
|
|
reader.read_u32::<LittleEndian>()?;
|
||
|
|
let sub_type = reader.read_u32::<LittleEndian>()?;
|
||
|
|
|
||
|
|
let this = match sub_type {
|
||
|
|
0x2F => Self::Subtype2F,
|
||
|
|
_ => Self::Unknown { sub_type, payload },
|
||
|
|
};
|
||
|
|
Ok(this)
|
||
|
|
}
|
||
|
|
}
|