use crate::error::Result;
use crate::reader::ByteReader;
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[derive(Debug, Clone)]
pub struct UpgradeAvailabilityChange {
pub player_flags: u32,
pub id: [u8; 4],
pub level_affected: i32,
pub availability: i32,
}
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[derive(Debug, Clone)]
pub struct TechAvailabilityChange {
pub player_flags: u32,
pub id: [u8; 4],
}
impl UpgradeAvailabilityChange {
pub(crate) fn parse(r: &mut ByteReader<'_>) -> Result<Self> {
Ok(Self {
player_flags: r.u32()?,
id: r.bytes()?,
level_affected: r.i32()?,
availability: r.i32()?,
})
}
}
impl TechAvailabilityChange {
pub(crate) fn parse(r: &mut ByteReader<'_>) -> Result<Self> {
Ok(Self {
player_flags: r.u32()?,
id: r.bytes()?,
})
}
}