mirror of
https://codeberg.org/demostf/parser.git
synced 2026-06-03 10:14:06 +02:00
voice encoding
This commit is contained in:
parent
9a9bcdc9df
commit
af669d34df
1 changed files with 40 additions and 2 deletions
|
|
@ -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(),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue