mirror of
https://codeberg.org/demostf/parser.git
synced 2026-06-03 10:14:06 +02:00
fixes
This commit is contained in:
parent
c3ddcae443
commit
8f2c732945
22 changed files with 83 additions and 83 deletions
7
Cargo.lock
generated
7
Cargo.lock
generated
|
|
@ -197,6 +197,11 @@ dependencies = [
|
||||||
"synstructure 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
"synstructure 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "fnv"
|
||||||
|
version = "1.0.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "fs_extra"
|
name = "fs_extra"
|
||||||
version = "1.1.0"
|
version = "1.1.0"
|
||||||
|
|
@ -580,6 +585,7 @@ dependencies = [
|
||||||
"bitbuffer 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"bitbuffer 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"enumflags2 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"enumflags2 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"err-derive 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"err-derive 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"jemallocator 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"jemallocator 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"main_error 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"main_error 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"no-panic 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
|
"no-panic 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
|
@ -667,6 +673,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
"checksum enumflags2 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "33121c8782ba948ba332dab29311b026a8716dc65a1599e5b88f392d38496af8"
|
"checksum enumflags2 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "33121c8782ba948ba332dab29311b026a8716dc65a1599e5b88f392d38496af8"
|
||||||
"checksum enumflags2_derive 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ecf634c5213044b8d54a46dd282cf5dd1f86bb5cb53e92c409cb4680a7fb9894"
|
"checksum enumflags2_derive 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ecf634c5213044b8d54a46dd282cf5dd1f86bb5cb53e92c409cb4680a7fb9894"
|
||||||
"checksum err-derive 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ead97ef6ef5530312e584d24b1ef31e96455bc2135945109fc737fe8b62ff4a5"
|
"checksum err-derive 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ead97ef6ef5530312e584d24b1ef31e96455bc2135945109fc737fe8b62ff4a5"
|
||||||
|
"checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3"
|
||||||
"checksum fs_extra 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5f2a4a2034423744d2cc7ca2068453168dcdb82c438419e639a26bd87839c674"
|
"checksum fs_extra 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5f2a4a2034423744d2cc7ca2068453168dcdb82c438419e639a26bd87839c674"
|
||||||
"checksum hermit-abi 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "eff2656d88f158ce120947499e971d743c05dbcbed62e5bd2f38f1698bbc3772"
|
"checksum hermit-abi 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "eff2656d88f158ce120947499e971d743c05dbcbed62e5bd2f38f1698bbc3772"
|
||||||
"checksum itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "501266b7edd0174f8530248f87f99c88fbe60ca4ef3dd486835b8d8d53136f7f"
|
"checksum itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "501266b7edd0174f8530248f87f99c88fbe60ca4ef3dd486835b8d8d53136f7f"
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,7 @@ main_error = "0.1.0"
|
||||||
jemallocator = { version = "0.3", optional = true }
|
jemallocator = { version = "0.3", optional = true }
|
||||||
better-panic = { version = "0.1", optional = true }
|
better-panic = { version = "0.1", optional = true }
|
||||||
no-panic = { version = "0.1", optional = true }
|
no-panic = { version = "0.1", optional = true }
|
||||||
|
fnv = "1.0.6"
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
pretty_assertions = "0.6"
|
pretty_assertions = "0.6"
|
||||||
|
|
|
||||||
|
|
@ -226,7 +226,7 @@ pub fn generate_game_events(demo: Demo) -> TokenStream {
|
||||||
|
|
||||||
let imports = quote!(
|
let imports = quote!(
|
||||||
use super::gamevent::{FromGameEventValue, FromRawGameEvent, GameEventValue, RawGameEvent};
|
use super::gamevent::{FromGameEventValue, FromRawGameEvent, GameEventValue, RawGameEvent};
|
||||||
use crate::{GameEventError, Result};
|
use crate::Result;
|
||||||
);
|
);
|
||||||
|
|
||||||
let event_definitions = events.iter().map(|event| {
|
let event_definitions = events.iter().map(|event| {
|
||||||
|
|
@ -330,7 +330,6 @@ pub fn generate_game_events(demo: Demo) -> TokenStream {
|
||||||
|
|
||||||
let sizes = events.iter().map(|event| {
|
let sizes = events.iter().map(|event| {
|
||||||
let name = get_event_name(&event.name);
|
let name = get_event_name(&event.name);
|
||||||
let variant_name = Ident::new(&name, span);
|
|
||||||
let struct_name = Ident::new(&format!("{}Event", name), span);
|
let struct_name = Ident::new(&format!("{}Event", name), span);
|
||||||
|
|
||||||
quote!(
|
quote!(
|
||||||
|
|
|
||||||
14
fuzz/Cargo.lock
generated
14
fuzz/Cargo.lock
generated
|
|
@ -19,17 +19,19 @@ version = "1.0.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "bitstream_reader"
|
name = "bitbuffer"
|
||||||
version = "0.7.0"
|
version = "0.7.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitstream_reader_derive 0.7.1",
|
"bitbuffer_derive 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"memchr 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"memchr 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
"num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "bitstream_reader_derive"
|
name = "bitbuffer_derive"
|
||||||
version = "0.7.1"
|
version = "0.7.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
"proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
|
@ -365,7 +367,7 @@ dependencies = [
|
||||||
name = "tf-demo-parser"
|
name = "tf-demo-parser"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitstream_reader 0.7.0",
|
"bitbuffer 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"enumflags2 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"enumflags2 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"err-derive 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"err-derive 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"main_error 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"main_error 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
|
@ -416,6 +418,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
"checksum aho-corasick 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)" = "58fb5e95d83b38284460a5fda7d6470aa0b8844d283a0b614b8535e880800d2d"
|
"checksum aho-corasick 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)" = "58fb5e95d83b38284460a5fda7d6470aa0b8844d283a0b614b8535e880800d2d"
|
||||||
"checksum arbitrary 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "491d5e42b1a073ff1fc1e0a02744b3f8bee9cf4bfd552053cac36c64b879795d"
|
"checksum arbitrary 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "491d5e42b1a073ff1fc1e0a02744b3f8bee9cf4bfd552053cac36c64b879795d"
|
||||||
"checksum autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d"
|
"checksum autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d"
|
||||||
|
"checksum bitbuffer 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6007718437539bc4564d96742ad7a86adf1244b5fb6e0381b426034f957edb7f"
|
||||||
|
"checksum bitbuffer_derive 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1d481746ea558a93cdbd62cd9766ab7f56789dcb2605b8344727c5ee92007070"
|
||||||
"checksum byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a7c3dd8985a7111efc5c80b44e23ecdd8c007de8ade3b96595387e812b957cf5"
|
"checksum byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a7c3dd8985a7111efc5c80b44e23ecdd8c007de8ade3b96595387e812b957cf5"
|
||||||
"checksum cc 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)" = "95e28fa049fda1c330bcf9d723be7663a899c4679724b34c81e9f5a326aab8cd"
|
"checksum cc 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)" = "95e28fa049fda1c330bcf9d723be7663a899c4679724b34c81e9f5a326aab8cd"
|
||||||
"checksum derivative 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "942ca430eef7a3806595a6737bc388bf51adb888d3fc0dd1b50f1c170167ee3a"
|
"checksum derivative 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "942ca430eef7a3806595a6737bc388bf51adb888d3fc0dd1b50f1c170167ee3a"
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
use super::gamevent::{FromGameEventValue, FromRawGameEvent, GameEventValue, RawGameEvent};
|
use super::gamevent::{FromGameEventValue, FromRawGameEvent, GameEventValue, RawGameEvent};
|
||||||
use crate::{GameEventError, Result};
|
use crate::Result;
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub struct ServerSpawnEvent {
|
pub struct ServerSpawnEvent {
|
||||||
pub hostname: String,
|
pub hostname: String,
|
||||||
|
|
@ -9034,3 +9034,4 @@ pub fn get_sizes() -> std::collections::hash_map::HashMap<&'static str, usize> {
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.collect()
|
.collect()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,9 +6,8 @@ pub use super::gameevent_gen::{GameEvent, GameEventType};
|
||||||
use crate::demo::message::gameevent::GameEventTypeId;
|
use crate::demo::message::gameevent::GameEventTypeId;
|
||||||
use parse_display::Display;
|
use parse_display::Display;
|
||||||
use std::cmp::Ordering;
|
use std::cmp::Ordering;
|
||||||
use std::fmt;
|
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug, Clone)]
|
||||||
pub struct GameEventDefinition {
|
pub struct GameEventDefinition {
|
||||||
pub id: GameEventTypeId,
|
pub id: GameEventTypeId,
|
||||||
pub event_type: GameEventType,
|
pub event_type: GameEventType,
|
||||||
|
|
@ -36,7 +35,7 @@ impl Ord for GameEventDefinition {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug, Clone)]
|
||||||
pub struct GameEventEntry {
|
pub struct GameEventEntry {
|
||||||
pub name: String,
|
pub name: String,
|
||||||
pub kind: GameEventValueType,
|
pub kind: GameEventValueType,
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
use std::collections::HashMap;
|
|
||||||
use std::iter::FromIterator;
|
|
||||||
|
|
||||||
use bitbuffer::{BitRead, LittleEndian};
|
use bitbuffer::{BitRead, LittleEndian};
|
||||||
use parse_display::Display;
|
use parse_display::Display;
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
use crate::Stream;
|
use crate::Stream;
|
||||||
/// Messages that consists only of primitives and string and can be derived
|
/// Messages that consists only of primitives and string and can be derived
|
||||||
use bitbuffer::{BitRead, LittleEndian};
|
use bitbuffer::{BitRead, LittleEndian};
|
||||||
use std::collections::HashMap;
|
|
||||||
|
|
||||||
#[derive(BitRead, Debug)]
|
#[derive(BitRead, Debug)]
|
||||||
pub struct FileMessage {
|
pub struct FileMessage {
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ use num_enum::TryFromPrimitive;
|
||||||
use std::convert::TryFrom;
|
use std::convert::TryFrom;
|
||||||
|
|
||||||
pub use generated::*;
|
pub use generated::*;
|
||||||
use serde::{Deserialize, Serialize};
|
|
||||||
use serde_repr::{Deserialize_repr, Serialize_repr};
|
use serde_repr::{Deserialize_repr, Serialize_repr};
|
||||||
|
|
||||||
use crate::demo::message::bspdecal::*;
|
use crate::demo::message::bspdecal::*;
|
||||||
|
|
|
||||||
|
|
@ -2,17 +2,17 @@ use bitbuffer::{BitRead, BitReadSized, LittleEndian};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use serde_repr::{Deserialize_repr, Serialize_repr};
|
use serde_repr::{Deserialize_repr, Serialize_repr};
|
||||||
|
|
||||||
use crate::demo::message::stringtable::{log_base2, read_var_int};
|
use crate::demo::message::stringtable::{log_base2};
|
||||||
use crate::demo::packet::datatable::{ClassId, SendTable, SendTableName, ServerClass};
|
use crate::demo::packet::datatable::{ClassId, SendTable};
|
||||||
use crate::demo::parser::ParseBitSkip;
|
use crate::demo::parser::ParseBitSkip;
|
||||||
use crate::demo::sendprop::{SendProp, SendPropDefinition, SendPropValue};
|
use crate::demo::sendprop::{SendProp, SendPropDefinition, SendPropValue};
|
||||||
use crate::{Parse, ParseError, ParserState, ReadResult, Result, Stream};
|
use crate::{Parse, ParseError, ParserState, ReadResult, Result, Stream};
|
||||||
use parse_display::{Display, FromStr};
|
use parse_display::{Display, FromStr};
|
||||||
use std::cmp::min;
|
use std::cmp::min;
|
||||||
use std::collections::HashMap;
|
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
use std::hint::unreachable_unchecked;
|
use std::hint::unreachable_unchecked;
|
||||||
use std::num::{NonZeroU32, ParseIntError};
|
use std::num::{NonZeroU32};
|
||||||
use std::rc::Rc;
|
use std::rc::Rc;
|
||||||
|
|
||||||
#[derive(
|
#[derive(
|
||||||
|
|
@ -221,7 +221,7 @@ impl PacketEntitiesMessage {
|
||||||
let props = match state.instance_baselines[baseline_index].get(&entity_index) {
|
let props = match state.instance_baselines[baseline_index].get(&entity_index) {
|
||||||
Some(baseline) => baseline.clone(),
|
Some(baseline) => baseline.clone(),
|
||||||
None => match state.static_baselines.get(&class_index) {
|
None => match state.static_baselines.get(&class_index) {
|
||||||
Some(static_baseline) => state.get_static_baseline(class_index, send_table)?,
|
Some(_static_baseline) => state.get_static_baseline(class_index, send_table)?,
|
||||||
None => Vec::with_capacity(8),
|
None => Vec::with_capacity(8),
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
use bitbuffer::{BitRead, BitReadSized, LittleEndian};
|
use bitbuffer::{BitRead, LittleEndian};
|
||||||
|
|
||||||
use crate::demo::message::stringtable::log_base2;
|
|
||||||
use crate::{ReadResult, Stream};
|
use crate::{ReadResult, Stream};
|
||||||
use std::cmp::min;
|
use std::cmp::min;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,11 @@
|
||||||
use bitbuffer::{BitRead, LittleEndian, ReadError};
|
use bitbuffer::{BitRead, LittleEndian};
|
||||||
use num_enum::TryFromPrimitive;
|
use num_enum::TryFromPrimitive;
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use std::convert::TryFrom;
|
use std::convert::TryFrom;
|
||||||
|
|
||||||
use crate::demo::handle_utf8_error;
|
use crate::demo::handle_utf8_error;
|
||||||
use crate::demo::parser::ParseBitSkip;
|
|
||||||
use crate::{ParseError, ReadResult, Result, Stream};
|
use crate::{ReadResult, Stream};
|
||||||
|
|
||||||
#[derive(TryFromPrimitive, Clone, Copy, Debug)]
|
#[derive(TryFromPrimitive, Clone, Copy, Debug)]
|
||||||
#[repr(u8)]
|
#[repr(u8)]
|
||||||
|
|
|
||||||
|
|
@ -1,18 +1,18 @@
|
||||||
use bitbuffer::{BitRead, LittleEndian};
|
use bitbuffer::{BitRead};
|
||||||
|
|
||||||
use crate::demo::parser::MalformedSendPropDefinitionError;
|
use crate::demo::parser::MalformedSendPropDefinitionError;
|
||||||
use crate::demo::sendprop::{
|
use crate::demo::sendprop::{
|
||||||
SendPropDefinition, SendPropDefinitionIndex, SendPropFlag, SendPropName, SendPropType,
|
SendPropDefinition, SendPropDefinitionIndex, SendPropFlag, SendPropName, SendPropType,
|
||||||
};
|
};
|
||||||
use crate::{Parse, ParseError, ParserState, ReadResult, Result, Stream};
|
use crate::{Parse, ParseError, ParserState, Result, Stream};
|
||||||
use parse_display::{Display, FromStr};
|
use parse_display::{Display, FromStr};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use std::borrow::Borrow;
|
|
||||||
use std::cell::{Cell, RefCell};
|
|
||||||
use std::cmp::min;
|
use std::cmp::min;
|
||||||
use std::fmt;
|
|
||||||
use std::num::ParseIntError;
|
|
||||||
use std::ops::Deref;
|
|
||||||
use std::rc::Rc;
|
use std::rc::Rc;
|
||||||
|
|
||||||
#[derive(BitRead, Debug, Clone, Copy, PartialEq, Eq, Hash, Ord, PartialOrd, Display, FromStr)]
|
#[derive(BitRead, Debug, Clone, Copy, PartialEq, Eq, Hash, Ord, PartialOrd, Display, FromStr)]
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
use bitbuffer::BitRead;
|
use bitbuffer::BitRead;
|
||||||
use num_enum::TryFromPrimitive;
|
use num_enum::TryFromPrimitive;
|
||||||
use std::convert::TryFrom;
|
|
||||||
|
|
||||||
use crate::{Parse, ParserState, Result, Stream};
|
use crate::{Parse, ParserState, Result, Stream};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
use std::collections::{BTreeMap, HashMap};
|
use std::collections::{BTreeMap, HashMap};
|
||||||
|
|
||||||
use serde::{ser::SerializeMap, Deserialize, Deserializer, Serialize, Serializer};
|
use serde::{ser::SerializeMap, Deserialize, Serialize, Serializer};
|
||||||
use serde_repr::{Deserialize_repr, Serialize_repr};
|
use serde_repr::{Deserialize_repr, Serialize_repr};
|
||||||
|
|
||||||
use crate::demo::gameevent_gen::{
|
use crate::demo::gameevent_gen::{
|
||||||
|
|
@ -289,13 +289,13 @@ impl MessageHandler for Analyser {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn into_output(self, state: &ParserState) -> Self::Output {
|
fn into_output(self, _state: &ParserState) -> Self::Output {
|
||||||
self.state
|
self.state
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl BorrowMessageHandler for Analyser {
|
impl BorrowMessageHandler for Analyser {
|
||||||
fn borrow_output(&self, state: &ParserState) -> &Self::Output {
|
fn borrow_output(&self, _state: &ParserState) -> &Self::Output {
|
||||||
&self.state
|
&self.state
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
use crate::demo::gameevent_gen::GameEventType::PlayerSappedObject;
|
|
||||||
use crate::demo::message::packetentities::{EntityId, PacketEntity};
|
use crate::demo::message::packetentities::{EntityId, PacketEntity};
|
||||||
use crate::demo::message::Message;
|
use crate::demo::message::Message;
|
||||||
use crate::demo::packet::datatable::{ParseSendTable, SendTableName, ServerClass, ServerClassName};
|
use crate::demo::packet::datatable::{ParseSendTable, ServerClass, ServerClassName};
|
||||||
pub use crate::demo::parser::analyser::{Class, Team, UserId};
|
pub use crate::demo::parser::analyser::{Class, Team, UserId};
|
||||||
use crate::demo::parser::handler::BorrowMessageHandler;
|
use crate::demo::parser::handler::BorrowMessageHandler;
|
||||||
use crate::demo::parser::MessageHandler;
|
use crate::demo::parser::MessageHandler;
|
||||||
|
|
@ -114,7 +114,7 @@ impl GameState {
|
||||||
.players
|
.players
|
||||||
.iter_mut()
|
.iter_mut()
|
||||||
.enumerate()
|
.enumerate()
|
||||||
.find(|(index, player)| player.entity == entity_id)
|
.find(|(_index, player)| player.entity == entity_id)
|
||||||
.map(|(index, _)| index)
|
.map(|(index, _)| index)
|
||||||
{
|
{
|
||||||
Some(index) => index,
|
Some(index) => index,
|
||||||
|
|
@ -156,7 +156,7 @@ impl MessageHandler for GameStateAnalyser {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn handle_message(&mut self, message: &Message, tick: u32) {
|
fn handle_message(&mut self, message: &Message, _tick: u32) {
|
||||||
match message {
|
match message {
|
||||||
Message::PacketEntities(message) => {
|
Message::PacketEntities(message) => {
|
||||||
for entity in &message.entities {
|
for entity in &message.entities {
|
||||||
|
|
@ -167,7 +167,7 @@ impl MessageHandler for GameStateAnalyser {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn handle_data_tables(&mut self, tables: &[ParseSendTable], server_classes: &[ServerClass]) {
|
fn handle_data_tables(&mut self, _tables: &[ParseSendTable], server_classes: &[ServerClass]) {
|
||||||
self.class_names = server_classes
|
self.class_names = server_classes
|
||||||
.iter()
|
.iter()
|
||||||
.map(|class| &class.name)
|
.map(|class| &class.name)
|
||||||
|
|
@ -175,13 +175,13 @@ impl MessageHandler for GameStateAnalyser {
|
||||||
.collect();
|
.collect();
|
||||||
}
|
}
|
||||||
|
|
||||||
fn into_output(self, state: &ParserState) -> Self::Output {
|
fn into_output(self, _state: &ParserState) -> Self::Output {
|
||||||
self.state
|
self.state
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl BorrowMessageHandler for GameStateAnalyser {
|
impl BorrowMessageHandler for GameStateAnalyser {
|
||||||
fn borrow_output(&self, state: &ParserState) -> &Self::Output {
|
fn borrow_output(&self, _state: &ParserState) -> &Self::Output {
|
||||||
&self.state
|
&self.state
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,21 +1,21 @@
|
||||||
use crate::demo::message::{Message, MessageType};
|
use crate::demo::message::{Message, MessageType};
|
||||||
use crate::demo::packet::datatable::{ParseSendTable, SendTable, ServerClass};
|
use crate::demo::packet::datatable::{ParseSendTable, ServerClass};
|
||||||
use crate::demo::packet::stringtable::{StringTable, StringTableEntry};
|
use crate::demo::packet::stringtable::{StringTable, StringTableEntry};
|
||||||
use crate::demo::packet::Packet;
|
use crate::demo::packet::Packet;
|
||||||
use crate::demo::parser::analyser::Analyser;
|
use crate::demo::parser::analyser::Analyser;
|
||||||
use crate::demo::parser::Parse;
|
|
||||||
use crate::{ParseError, ParserState, Stream};
|
use crate::ParserState;
|
||||||
|
|
||||||
pub trait MessageHandler {
|
pub trait MessageHandler {
|
||||||
type Output;
|
type Output;
|
||||||
|
|
||||||
fn does_handle(message_type: MessageType) -> bool;
|
fn does_handle(message_type: MessageType) -> bool;
|
||||||
|
|
||||||
fn handle_message(&mut self, message: &Message, tick: u32) {}
|
fn handle_message(&mut self, _message: &Message, _tick: u32) {}
|
||||||
|
|
||||||
fn handle_string_entry(&mut self, table: &str, index: usize, entries: &StringTableEntry) {}
|
fn handle_string_entry(&mut self, _table: &str, _index: usize, _entries: &StringTableEntry) {}
|
||||||
|
|
||||||
fn handle_data_tables(&mut self, tables: &[ParseSendTable], server_classes: &[ServerClass]) {}
|
fn handle_data_tables(&mut self, _tables: &[ParseSendTable], _server_classes: &[ServerClass]) {}
|
||||||
|
|
||||||
fn into_output(self, state: &ParserState) -> Self::Output;
|
fn into_output(self, state: &ParserState) -> Self::Output;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,19 +1,17 @@
|
||||||
use std::collections::HashMap;
|
|
||||||
|
|
||||||
use serde::{Deserialize, Serialize};
|
|
||||||
use serde_repr::{Deserialize_repr, Serialize_repr};
|
|
||||||
|
|
||||||
use crate::demo::gameevent_gen::{
|
|
||||||
GameEvent, PlayerDeathEvent, PlayerSpawnEvent, TeamPlayRoundWinEvent,
|
|
||||||
};
|
|
||||||
use crate::demo::message::packetentities::EntityId;
|
|
||||||
use crate::demo::message::usermessage::{ChatMessageKind, SayText2Message, UserMessage};
|
|
||||||
|
|
||||||
use crate::demo::message::{Message, MessageType};
|
use crate::demo::message::{Message, MessageType};
|
||||||
use crate::demo::packet::stringtable::StringTableEntry;
|
|
||||||
use crate::demo::packet::PacketType;
|
|
||||||
use crate::demo::parser::handler::MessageHandler;
|
use crate::demo::parser::handler::MessageHandler;
|
||||||
use crate::demo::vector::Vector;
|
|
||||||
use crate::{ParserState, ReadResult, Stream};
|
use crate::{ParserState};
|
||||||
|
|
||||||
#[derive(Default)]
|
#[derive(Default)]
|
||||||
pub struct MessageTypeAnalyser {
|
pub struct MessageTypeAnalyser {
|
||||||
|
|
@ -23,15 +21,15 @@ pub struct MessageTypeAnalyser {
|
||||||
impl MessageHandler for MessageTypeAnalyser {
|
impl MessageHandler for MessageTypeAnalyser {
|
||||||
type Output = Vec<MessageType>;
|
type Output = Vec<MessageType>;
|
||||||
|
|
||||||
fn does_handle(message_type: MessageType) -> bool {
|
fn does_handle(_message_type: MessageType) -> bool {
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
|
|
||||||
fn handle_message(&mut self, message: &Message, tick: u32) {
|
fn handle_message(&mut self, message: &Message, _tick: u32) {
|
||||||
self.packet_types.push(message.get_message_type())
|
self.packet_types.push(message.get_message_type())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn into_output(self, state: &ParserState) -> Self::Output {
|
fn into_output(self, _state: &ParserState) -> Self::Output {
|
||||||
self.packet_types
|
self.packet_types
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,17 +1,15 @@
|
||||||
use bitbuffer::{BitRead, FromUtf8Error, LittleEndian, ReadError};
|
use bitbuffer::{BitRead, LittleEndian};
|
||||||
|
|
||||||
pub use self::messagetypeanalyser::MessageTypeAnalyser;
|
pub use self::messagetypeanalyser::MessageTypeAnalyser;
|
||||||
use crate::demo::gamevent::{GameEventValue, GameEventValueType};
|
|
||||||
use crate::demo::header::Header;
|
use crate::demo::header::Header;
|
||||||
use crate::demo::message::packetentities::EntityId;
|
|
||||||
use crate::demo::packet::datatable::{ClassId, SendTableName};
|
|
||||||
use crate::demo::packet::Packet;
|
use crate::demo::packet::Packet;
|
||||||
use crate::demo::parser::analyser::Analyser;
|
use crate::demo::parser::analyser::Analyser;
|
||||||
pub use crate::demo::parser::analyser::MatchState;
|
pub use crate::demo::parser::analyser::MatchState;
|
||||||
pub use crate::demo::parser::handler::{DemoHandler, MessageHandler};
|
pub use crate::demo::parser::handler::{DemoHandler, MessageHandler};
|
||||||
pub use crate::demo::parser::state::ParserState;
|
pub use crate::demo::parser::state::ParserState;
|
||||||
use crate::Stream;
|
use crate::Stream;
|
||||||
use err_derive::Error;
|
|
||||||
|
|
||||||
mod analyser;
|
mod analyser;
|
||||||
mod error;
|
mod error;
|
||||||
|
|
@ -22,7 +20,6 @@ mod state;
|
||||||
|
|
||||||
pub use self::error::*;
|
pub use self::error::*;
|
||||||
use crate::demo::parser::handler::BorrowMessageHandler;
|
use crate::demo::parser::handler::BorrowMessageHandler;
|
||||||
use serde::export::PhantomData;
|
|
||||||
|
|
||||||
pub trait Parse: Sized {
|
pub trait Parse: Sized {
|
||||||
fn parse(stream: &mut Stream, state: &ParserState) -> Result<Self>;
|
fn parse(stream: &mut Stream, state: &ParserState) -> Result<Self>;
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,8 @@
|
||||||
use std::collections::{BTreeMap, HashMap};
|
use fnv::FnvHashMap;
|
||||||
|
use std::collections::HashMap;
|
||||||
|
|
||||||
use crate::demo::gamevent::GameEventDefinition;
|
use crate::demo::gamevent::GameEventDefinition;
|
||||||
use crate::demo::message::gameevent::GameEventTypeId;
|
|
||||||
use crate::demo::message::packetentities::{EntityId, PacketEntitiesMessage, PVS};
|
use crate::demo::message::packetentities::{EntityId, PacketEntitiesMessage, PVS};
|
||||||
use crate::demo::message::stringtable::StringTableMeta;
|
use crate::demo::message::stringtable::StringTableMeta;
|
||||||
use crate::demo::message::{Message, MessageType};
|
use crate::demo::message::{Message, MessageType};
|
||||||
|
|
@ -9,13 +10,11 @@ use crate::demo::packet::datatable::{
|
||||||
ClassId, ParseSendTable, SendTable, SendTableName, ServerClass,
|
ClassId, ParseSendTable, SendTable, SendTableName, ServerClass,
|
||||||
};
|
};
|
||||||
use crate::demo::packet::stringtable::StringTableEntry;
|
use crate::demo::packet::stringtable::StringTableEntry;
|
||||||
use crate::demo::parser::analyser::Analyser;
|
|
||||||
use crate::demo::parser::handler::MessageHandler;
|
|
||||||
use crate::demo::sendprop::SendProp;
|
use crate::demo::sendprop::SendProp;
|
||||||
use crate::nullhasher::NullHasherBuilder;
|
use crate::nullhasher::NullHasherBuilder;
|
||||||
use crate::{Result, Stream};
|
use crate::{Result, Stream};
|
||||||
use std::cell::RefCell;
|
use std::cell::RefCell;
|
||||||
use std::rc::Rc;
|
|
||||||
|
|
||||||
#[derive(Default)]
|
#[derive(Default)]
|
||||||
pub struct DemoMeta {
|
pub struct DemoMeta {
|
||||||
|
|
@ -106,7 +105,7 @@ impl ParserState {
|
||||||
.map(|table| table.flatten_props(&parse_tables))
|
.map(|table| table.flatten_props(&parse_tables))
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
let mut send_tables: HashMap<SendTableName, SendTable> = parse_tables
|
let mut send_tables: FnvHashMap<SendTableName, SendTable> = parse_tables
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.zip(flat_props.into_iter())
|
.zip(flat_props.into_iter())
|
||||||
.map(|(parse_table, flat)| {
|
.map(|(parse_table, flat)| {
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ use bitbuffer::{BitRead, LittleEndian};
|
||||||
use enumflags2::BitFlags;
|
use enumflags2::BitFlags;
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use crate::{Parse, ParseError, ReadResult, Result, Stream};
|
use crate::{ParseError, ReadResult, Result, Stream};
|
||||||
|
|
||||||
use super::packet::datatable::ParseSendTable;
|
use super::packet::datatable::ParseSendTable;
|
||||||
use super::vector::{Vector, VectorXY};
|
use super::vector::{Vector, VectorXY};
|
||||||
|
|
@ -12,7 +12,7 @@ use crate::demo::parser::MalformedSendPropDefinitionError;
|
||||||
use parse_display::Display;
|
use parse_display::Display;
|
||||||
use serde::export::TryFrom;
|
use serde::export::TryFrom;
|
||||||
use std::cmp::min;
|
use std::cmp::min;
|
||||||
use std::convert::TryInto;
|
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
use std::rc::Rc;
|
use std::rc::Rc;
|
||||||
|
|
||||||
|
|
@ -438,7 +438,7 @@ impl SendPropValue {
|
||||||
Ok(values)
|
Ok(values)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn read_string(stream: &mut Stream, definition: &SendPropDefinition) -> Result<String> {
|
fn read_string(stream: &mut Stream, _definition: &SendPropDefinition) -> Result<String> {
|
||||||
let length = stream.read_int(9)?;
|
let length = stream.read_int(9)?;
|
||||||
stream.read_sized(length).map_err(ParseError::from)
|
stream.read_sized(length).map_err(ParseError::from)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,3 @@
|
||||||
#![allow(dead_code)]
|
|
||||||
#![allow(unused_imports)]
|
|
||||||
#![allow(unused_variables)]
|
|
||||||
|
|
||||||
pub use bitbuffer::Result as ReadResult;
|
pub use bitbuffer::Result as ReadResult;
|
||||||
|
|
||||||
pub use crate::demo::{
|
pub use crate::demo::{
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue