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

update to bitstream_reader 0.7

This commit is contained in:
Robin Appelman 2020-01-07 23:19:48 +01:00
commit b7c3baee17
12 changed files with 32 additions and 66 deletions

View file

@ -1,4 +1,4 @@
use bitstream_reader::{BitRead, BitSkip, LittleEndian};
use bitstream_reader::{BitRead, LittleEndian};
use crate::demo::sendprop::read_bit_coord;
use crate::demo::vector::Vector;
@ -44,5 +44,3 @@ impl BitRead<LittleEndian> for BSPDecalMessage {
})
}
}
impl BitSkip<LittleEndian> for BSPDecalMessage {}

View file

@ -1,4 +1,4 @@
use bitstream_reader::{BitRead, BitReadSized, BitSkip, LittleEndian};
use bitstream_reader::{BitRead, BitReadSized, LittleEndian};
use crate::demo::message::stringtable::log_base2;
use crate::{ReadResult, Stream};
@ -40,5 +40,3 @@ impl BitRead<LittleEndian> for ClassInfoMessage {
})
}
}
impl BitSkip<LittleEndian> for ClassInfoMessage {}

View file

@ -1,7 +1,7 @@
use std::collections::HashMap;
use std::iter::FromIterator;
use bitstream_reader::{BitRead, BitSkip, LittleEndian};
use bitstream_reader::{BitRead, LittleEndian};
use crate::demo::gameevent_gen::GameEventType;
use crate::demo::gamevent::{
@ -117,5 +117,3 @@ impl BitRead<LittleEndian> for GameEventListMessage {
Ok(GameEventListMessage { event_list })
}
}
impl BitSkip<LittleEndian> for GameEventListMessage {}

View file

@ -1,6 +1,6 @@
use crate::Stream;
/// Messages that consists only of primitives and string and can be derived
use bitstream_reader::{BitRead, BitSize, BitSkip, LittleEndian};
use bitstream_reader::{BitRead, LittleEndian};
use std::collections::HashMap;
#[derive(BitRead, Debug)]
@ -10,9 +10,7 @@ pub struct FileMessage {
pub requested: bool,
}
impl BitSkip<LittleEndian> for FileMessage {}
#[derive(BitRead, BitSize, Debug)]
#[derive(BitRead, Debug)]
pub struct NetTickMessage {
pub tick: u32,
pub frame_time: u16,
@ -24,9 +22,7 @@ pub struct StringCmdMessage {
pub command: String,
}
impl BitSkip<LittleEndian> for StringCmdMessage {}
#[derive(BitRead, BitSize, Debug)]
#[derive(BitRead, Debug)]
pub struct SigOnStateMessage {
pub state: u8,
pub count: u32,
@ -37,8 +33,6 @@ pub struct PrintMessage {
pub value: String,
}
impl BitSkip<LittleEndian> for PrintMessage {}
#[derive(BitRead, Debug)]
pub struct ServerInfoMessage {
pub version: u16,
@ -60,20 +54,18 @@ pub struct ServerInfoMessage {
pub replay: bool,
}
impl BitSkip<LittleEndian> for ServerInfoMessage {}
#[derive(BitRead, BitSize, Debug)]
#[derive(BitRead, Debug)]
pub struct SetPauseMessage {
pub pause: bool,
}
#[derive(BitRead, BitSize, Debug)]
#[derive(BitRead, Debug)]
pub struct SetViewMessage {
#[size = 11]
pub index: u16,
}
#[derive(BitRead, BitSize, Debug)]
#[derive(BitRead, Debug)]
pub struct FixAngleMessage {
pub relative: bool,
pub x: u16,
@ -94,9 +86,7 @@ pub struct EntityMessage {
pub data: Stream,
}
impl BitSkip<LittleEndian> for EntityMessage {}
#[derive(BitRead, BitSize, Debug)]
#[derive(BitRead, Debug)]
pub struct PreFetchMessage {
#[size = 14]
pub index: u16,
@ -111,16 +101,12 @@ pub struct MenuMessage {
pub index: Stream,
}
impl BitSkip<LittleEndian> for MenuMessage {}
#[derive(BitRead, Debug)]
pub struct GetCvarValueMessage {
pub cookie: u32,
pub value: String,
}
impl BitSkip<LittleEndian> for GetCvarValueMessage {}
#[derive(BitRead, Debug)]
#[endianness = "LittleEndian"]
pub struct CmdKeyValuesMessage {
@ -128,5 +114,3 @@ pub struct CmdKeyValuesMessage {
#[size = "length * 8"]
pub data: Stream,
}
impl BitSkip<LittleEndian> for CmdKeyValuesMessage {}

View file

@ -1,4 +1,4 @@
use bitstream_reader::{BitRead, BitReadSized, BitSkip, LittleEndian};
use bitstream_reader::{BitRead, BitReadSized, LittleEndian};
use crate::demo::message::stringtable::log_base2;
use crate::{ReadResult, Stream};
@ -24,5 +24,3 @@ impl BitRead<LittleEndian> for SetConVarMessage {
Ok(SetConVarMessage { vars })
}
}
impl BitSkip<LittleEndian> for SetConVarMessage {}

View file

@ -98,13 +98,11 @@ impl BitRead<LittleEndian> for UserMessage {
};
Ok(message)
}
}
impl ParseBitSkip for UserMessage {
fn parse_skip(stream: &mut Stream) -> Result<()> {
fn skip(stream: &mut Stream) -> ReadResult<()> {
stream.skip_bits(8)?;
let length: u32 = stream.read_int(11)?;
stream.skip_bits(length as usize).map_err(ParseError::from)
stream.skip_bits(length as usize)
}
}

View file

@ -1,4 +1,4 @@
use bitstream_reader::{BitRead, BitSkip, LittleEndian};
use bitstream_reader::{BitRead, LittleEndian};
use crate::{ReadResult, Stream};
@ -30,8 +30,6 @@ impl BitRead<LittleEndian> for VoiceInitMessage {
}
}
impl BitSkip<LittleEndian> for VoiceInitMessage {}
#[derive(BitRead, Debug, Clone)]
#[endianness = "LittleEndian"]
pub struct VoiceDataMessage {
@ -42,8 +40,6 @@ pub struct VoiceDataMessage {
data: Stream,
}
impl BitSkip<LittleEndian> for VoiceDataMessage {}
#[derive(Debug, Clone)]
pub struct ParseSoundsMessage {
pub reliable: bool,
@ -71,5 +67,3 @@ impl BitRead<LittleEndian> for ParseSoundsMessage {
})
}
}
impl BitSkip<LittleEndian> for ParseSoundsMessage {}

View file

@ -1,10 +1,10 @@
use bitstream_reader::{BitRead, BitSize, Endianness, LazyBitRead, LittleEndian};
use bitstream_reader::{bit_size_of, BitRead, Endianness, LazyBitRead, LittleEndian};
use crate::demo::message::{Message, MessageType};
use crate::demo::vector::Vector;
use crate::{Parse, ParserState, ReadResult, Result, Stream};
#[derive(Debug, BitRead, BitSize)]
#[derive(Debug, BitRead)]
pub struct MessagePacketMeta {
pub flags: u32, // TODO
pub view_angles: ViewAngles,
@ -26,12 +26,6 @@ pub struct ViewAngles {
pub local_angles: (Vector, Vector),
}
impl BitSize for ViewAngles {
fn bit_size() -> usize {
Vector::bit_size() * 6
}
}
impl<E: Endianness> BitRead<E> for ViewAngles {
fn read(stream: &mut bitstream_reader::BitStream<E>) -> ReadResult<Self> {
let view_origin_1 = Vector::read(stream)?;
@ -46,6 +40,10 @@ impl<E: Endianness> BitRead<E> for ViewAngles {
local_angles,
})
}
fn bit_size() -> Option<usize> {
Some(bit_size_of::<Vector>().unwrap() * 6)
}
}
impl Parse for MessagePacket {

View file

@ -1,4 +1,4 @@
use bitstream_reader::{BitRead, BitSkip, FromUtf8Error, LittleEndian, ReadError};
use bitstream_reader::{BitRead, FromUtf8Error, LittleEndian, ReadError};
pub use self::messagetypeanalyser::MessageTypeAnalyser;
use crate::demo::gamevent::{GameEventValue, GameEventValueType};
@ -38,7 +38,7 @@ pub trait ParseBitSkip {
fn parse_skip(stream: &mut Stream) -> Result<()>;
}
impl<T: BitSkip<LittleEndian>> ParseBitSkip for T {
impl<T: BitRead<LittleEndian>> ParseBitSkip for T {
#[inline(always)]
fn parse_skip(stream: &mut Stream) -> Result<()> {
Self::skip(stream).map_err(ParseError::from)

View file

@ -1,8 +1,8 @@
use bitstream_reader::{BitRead, BitSize};
use bitstream_reader::BitRead;
use parse_display::Display;
use serde::{Deserialize, Serialize};
#[derive(BitRead, BitSize, Debug, Clone, Copy, Default, Serialize, Deserialize, Display)]
#[derive(BitRead, Debug, Clone, Copy, Default, Serialize, Deserialize, Display)]
#[display("({x}, {y}, {z})")]
pub struct Vector {
pub x: f32,
@ -16,7 +16,7 @@ impl PartialEq for Vector {
}
}
#[derive(BitRead, BitSize, Debug, Clone, Copy, Default, Serialize, Deserialize, Display)]
#[derive(BitRead, Debug, Clone, Copy, Default, Serialize, Deserialize, Display)]
#[display("({x}, {y})")]
pub struct VectorXY {
pub x: f32,