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

voice encoding

This commit is contained in:
Robin Appelman 2021-07-13 22:36:25 +02:00
commit af669d34df

View file

@ -1,4 +1,4 @@
use bitbuffer::{BitRead, BitWrite, BitWriteStream, LittleEndian}; use bitbuffer::{BitRead, BitWrite, BitWriteSized, BitWriteStream, LittleEndian};
use crate::{ReadResult, Stream}; use crate::{ReadResult, Stream};
@ -67,7 +67,7 @@ pub struct VoiceDataMessage<'a> {
data: Stream<'a>, data: Stream<'a>,
} }
#[derive(Debug, Clone)] #[derive(Debug, Clone, PartialEq)]
pub struct ParseSoundsMessage<'a> { pub struct ParseSoundsMessage<'a> {
pub reliable: bool, pub reliable: bool,
pub num: u8, pub num: u8,
@ -94,3 +94,41 @@ impl<'a> BitRead<'a, LittleEndian> for ParseSoundsMessage<'a> {
}) })
} }
} }
impl<'a> BitWrite<LittleEndian> for ParseSoundsMessage<'a> {
fn write(&self, stream: &mut BitWriteStream<LittleEndian>) -> ReadResult<()> {
self.reliable.write(stream)?;
if !self.reliable {
self.num.write(stream)?;
}
if self.reliable {
self.length.write_sized(stream, 8)?;
} else {
self.length.write(stream)?;
}
self.data.write(stream)?;
Ok(())
}
}
#[test]
fn test_parse_sounds_roundtrip() {
use bitbuffer::BitReadBuffer;
let inner = BitReadBuffer::new(&[1, 2, 3, 4, 5, 6], LittleEndian);
crate::test_roundtrip_encode(ParseSoundsMessage {
reliable: false,
num: 0,
length: inner.bit_len() as u16,
data: inner.clone().into(),
});
crate::test_roundtrip_encode(ParseSoundsMessage {
reliable: true,
num: 1,
length: inner.bit_len() as u16,
data: inner.into(),
});
}