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

stringtables

This commit is contained in:
Robin Appelman 2019-03-01 01:47:37 +01:00
commit cd552319ac
17 changed files with 250 additions and 43 deletions

View file

@ -1,6 +1,6 @@
use bitstream_reader::{BitRead, LittleEndian};
use crate::{Stream, ReadResult};
use crate::{ReadResult, Stream};
#[derive(Debug)]
pub struct ConsoleCmdPacket {

View file

@ -1,7 +1,7 @@
use bitstream_reader::BitRead;
use crate::{Parse, ParseError, ParserState, Result, Stream};
use crate::demo::sendprop::{SendPropDefinition, SendPropFlag, SendPropType};
use crate::{Parse, ParseError, ParserState, Result, Stream};
#[derive(BitRead, Debug)]
pub struct ServerClass {
@ -34,7 +34,7 @@ impl Parse for DataTablePacket {
let mut tables = vec![];
while packet_data.read_bool()? {
let needs_decoder = packet_data.read_bool()?;
let needs_decoder = packet_data.read()?;
let name: String = packet_data.read()?;
let prop_count = packet_data.read_int(10)?;

View file

@ -1,4 +1,4 @@
use bitstream_reader::{BitRead};
use bitstream_reader::BitRead;
use enum_primitive_derive::Primitive;
use crate::{Parse, ParserState, Result, Stream};

View file

@ -1,6 +1,6 @@
use bitstream_reader::{BitRead, LittleEndian};
use crate::{Stream, ReadResult};
use crate::{ReadResult, Stream};
#[derive(Debug)]
pub struct StopPacket;

View file

@ -2,18 +2,25 @@ use std::fmt;
use bitstream_reader::{BitRead, LittleEndian};
use crate::{Parse, ParseError, ParserState, ReadResult, Result, Stream};
use crate::demo::sendprop::SendPropFlag::Exclude;
use crate::{Parse, ParseError, ParserState, ReadResult, Result, Stream};
#[derive(BitRead, Clone, Copy, Debug)]
pub struct FixedUserdataSize {
#[size = 12]
pub size: u16,
#[size = 4]
pub bits: u8,
}
#[derive(Debug)]
pub struct StringTable {
name: String,
entries: Vec<StringTableEntry>,
max_entries: u32,
fixed_userdata_size: Option<u32>,
fixed_userdata_size_bits: Option<u32>,
client_entries: Option<Vec<StringTableEntry>>,
compressed: bool,
pub name: String,
pub entries: Vec<StringTableEntry>,
pub max_entries: u16,
pub fixed_userdata_size: Option<FixedUserdataSize>,
pub client_entries: Option<Vec<StringTableEntry>>,
pub compressed: bool,
}
impl BitRead<LittleEndian> for StringTable {
@ -34,26 +41,25 @@ impl BitRead<LittleEndian> for StringTable {
entries,
max_entries: entry_count,
fixed_userdata_size: None,
fixed_userdata_size_bits: None,
client_entries,
compressed: false,
})
}
}
#[derive(BitRead)]
#[derive(BitRead, Clone)]
#[endianness = "LittleEndian"]
pub struct ExtraData {
len: u16,
pub len: u16,
#[size = "len * 8"]
data: Stream,
pub data: Stream,
}
#[derive(BitRead)]
#[derive(BitRead, Clone)]
#[endianness = "LittleEndian"]
pub struct StringTableEntry {
text: String,
extra_data: Option<ExtraData>,
pub text: String,
pub extra_data: Option<ExtraData>,
}
impl fmt::Debug for StringTableEntry {
@ -63,8 +69,7 @@ impl fmt::Debug for StringTableEntry {
Some(extra_data) => write!(
f,
"StringTableEntry{{ '{}' with {} bits of extra data }}",
self.text,
extra_data.len
self.text, extra_data.len
),
}
}

View file

@ -1,6 +1,6 @@
use bitstream_reader::{BitRead};
use bitstream_reader::BitRead;
#[derive(BitRead, Debug)]
pub struct SyncTickPacket {
tick: u32,
}
}

View file

@ -1,6 +1,6 @@
use bitstream_reader::{BitRead, LittleEndian};
use crate::{Stream, ReadResult};
use crate::{ReadResult, Stream};
#[derive(Debug)]
pub struct UserCmdPacket {