1
0
Fork 0
mirror of https://codeberg.org/demostf/parser.git synced 2026-06-03 18:24:05 +02:00

early sendprop cleanup

This commit is contained in:
Robin Appelman 2019-04-07 19:37:51 +02:00
commit e3ddd9f3e2
3 changed files with 36 additions and 28 deletions

View file

@ -18,10 +18,10 @@ impl EntityId {
#[derive(BitRead, Clone, Copy, Debug)] #[derive(BitRead, Clone, Copy, Debug)]
#[discriminant_bits = 3] #[discriminant_bits = 3]
pub enum PVS { pub enum PVS {
PRESERVE = 0, Preserve = 0,
ENTER = 1, Leave = 1,
LEAVE = 2, Enter = 2,
DELETE = 4, Delete = 3,
} }
#[derive(Debug)] #[derive(Debug)]
@ -79,3 +79,15 @@ impl ParseBitSkip for PacketEntitiesMessage {
stream.skip_bits(length as usize).map_err(ParseError::from) stream.skip_bits(length as usize).map_err(ParseError::from)
} }
} }
pub struct EntityUpdate {
props: Vec<SendProp>
}
impl Parse for EntityUpdate {
fn parse(stream: &mut Stream, _state: &ParserState) -> Result<Self> {
Ok(EntityUpdate {
props: Vec::new()
})
}
}

View file

@ -29,7 +29,7 @@ impl Parse for SendTable {
for _ in 0..prop_count { for _ in 0..prop_count {
let prop: SendPropDefinition = let prop: SendPropDefinition =
SendPropDefinition::read(stream, name.clone())?; SendPropDefinition::read(stream)?;
if prop.flags.contains(SendPropFlag::InsideArray) { if prop.flags.contains(SendPropFlag::InsideArray) {
if array_element_prop.is_some() if array_element_prop.is_some()
|| prop.flags.contains(SendPropFlag::ChangesOften) || prop.flags.contains(SendPropFlag::ChangesOften)

View file

@ -2,7 +2,7 @@ use bitstream_reader::{BitRead, LittleEndian};
use enumflags2::BitFlags; use enumflags2::BitFlags;
use enumflags2_derive::EnumFlags; use enumflags2_derive::EnumFlags;
use crate::{ReadResult, Result, Stream}; use crate::{ReadResult, Result, Stream, Parse};
use super::packet::datatable::SendTable; use super::packet::datatable::SendTable;
use super::vector::{Vector, VectorXY}; use super::vector::{Vector, VectorXY};
@ -17,14 +17,29 @@ pub struct SendPropDefinition {
pub high_value: Option<f32>, pub high_value: Option<f32>,
pub bit_count: Option<u32>, pub bit_count: Option<u32>,
pub original_bit_count: Option<u32>, pub original_bit_count: Option<u32>,
pub table: Option<SendTable>,
pub element_count: Option<u16>, pub element_count: Option<u16>,
pub array_property: Option<Box<SendPropDefinition>>, pub array_property: Option<Box<SendPropDefinition>>,
pub owner_table_name: String,
} }
impl SendPropDefinition { impl SendPropDefinition {
pub fn read(stream: &mut Stream, owner_table_name: String) -> Result<Self> { pub fn with_array_property(self, array_property: Self) -> Self {
SendPropDefinition {
prop_type: self.prop_type,
name: self.name,
flags: self.flags,
exclude_dt_name: self.exclude_dt_name,
low_value: self.low_value,
high_value: self.high_value,
bit_count: self.bit_count,
original_bit_count: self.original_bit_count,
element_count: self.element_count,
array_property: Some(Box::new(array_property)),
}
}
}
impl BitRead<LittleEndian> for SendPropDefinition {
fn read(stream: &mut Stream) -> ReadResult<Self> {
let prop_type = SendPropType::read(stream)?; let prop_type = SendPropType::read(stream)?;
let name = stream.read_string(None)?; let name = stream.read_string(None)?;
let flags = SendPropFlags::read(stream)?; let flags = SendPropFlags::read(stream)?;
@ -67,29 +82,10 @@ impl SendPropDefinition {
high_value, high_value,
bit_count, bit_count,
original_bit_count, original_bit_count,
table: None,
element_count, element_count,
array_property: None, array_property: None,
owner_table_name,
}) })
} }
pub fn with_array_property(self, array_property: Self) -> Self {
SendPropDefinition {
prop_type: self.prop_type,
name: self.name,
flags: self.flags,
exclude_dt_name: self.exclude_dt_name,
low_value: self.low_value,
high_value: self.high_value,
bit_count: self.bit_count,
original_bit_count: self.original_bit_count,
table: None,
element_count: self.element_count,
array_property: Some(Box::new(array_property)),
owner_table_name: self.owner_table_name,
}
}
} }
#[derive(BitRead, Copy, Clone, PartialEq, Debug)] #[derive(BitRead, Copy, Clone, PartialEq, Debug)]