mirror of
https://codeberg.org/demostf/parser.git
synced 2026-06-03 18:24:05 +02:00
more propnames
This commit is contained in:
parent
b8d3540069
commit
b9a9d2c2c1
5 changed files with 29376 additions and 5390 deletions
|
|
@ -26,7 +26,7 @@ path = "src/bin/schema.rs"
|
||||||
required-features = ["schema"]
|
required-features = ["schema"]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
bitbuffer = { version = "0.10", features = ["serde"] }
|
bitbuffer = { version = "0.10.5", features = ["serde"] }
|
||||||
num_enum = "0.5"
|
num_enum = "0.5"
|
||||||
num-traits = "0.2"
|
num-traits = "0.2"
|
||||||
enumflags2 = { version = "0.7", features = ["serde"] }
|
enumflags2 = { version = "0.7", features = ["serde"] }
|
||||||
|
|
|
||||||
4
codegen/Cargo.lock
generated
4
codegen/Cargo.lock
generated
|
|
@ -85,9 +85,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "bitbuffer"
|
name = "bitbuffer"
|
||||||
version = "0.10.3"
|
version = "0.10.5"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "650346fecc0be01be480d078b014cc0deb000d26790a53f6ef854dda35f87d62"
|
checksum = "2a1011b65695f83be55d63eadf310a4c28da66550b196bca815eb94ec8885da8"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitbuffer_derive",
|
"bitbuffer_derive",
|
||||||
"err-derive",
|
"err-derive",
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
use fnv::{FnvHashMap, FnvHashSet};
|
use fnv::{FnvHashMap, FnvHashSet};
|
||||||
use proc_macro2::TokenStream;
|
use proc_macro2::TokenStream;
|
||||||
use quote::quote;
|
use quote::quote;
|
||||||
|
use std::collections::HashSet;
|
||||||
use tf_demo_parser::demo::message::Message;
|
use tf_demo_parser::demo::message::Message;
|
||||||
use tf_demo_parser::demo::packet::datatable::{ParseSendTable, SendTableName, ServerClass};
|
use tf_demo_parser::demo::packet::datatable::{ParseSendTable, SendTableName, ServerClass};
|
||||||
use tf_demo_parser::demo::parser::MessageHandler;
|
use tf_demo_parser::demo::parser::MessageHandler;
|
||||||
|
|
@ -41,12 +42,28 @@ impl MessageHandler for PropAnalyzer {
|
||||||
parse_tables: &[ParseSendTable],
|
parse_tables: &[ParseSendTable],
|
||||||
_server_classes: &[ServerClass],
|
_server_classes: &[ServerClass],
|
||||||
) {
|
) {
|
||||||
|
let mut numeric_tables: FnvHashSet<String> = HashSet::default();
|
||||||
for table in parse_tables {
|
for table in parse_tables {
|
||||||
for prop_def in &table.props {
|
for prop_def in &table.props {
|
||||||
self.prop_names.insert(
|
self.prop_names.insert(
|
||||||
prop_def.identifier(),
|
prop_def.identifier(),
|
||||||
(table.name.clone(), prop_def.name.clone()),
|
(table.name.clone(), prop_def.name.clone()),
|
||||||
);
|
);
|
||||||
|
let name = prop_def.name.as_str();
|
||||||
|
if name.len() == 3 && table.name.as_str().len() > 3 {
|
||||||
|
if let Ok(_) = name.parse::<u8>() {
|
||||||
|
numeric_tables.insert(table.name.to_string());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for table in numeric_tables {
|
||||||
|
for num in 0..256 {
|
||||||
|
let prop_name = SendPropName::from(format!("{:03}", num));
|
||||||
|
self.prop_names.insert(
|
||||||
|
SendPropIdentifier::new(&table, prop_name.as_str()),
|
||||||
|
(table.clone().into(), prop_name),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -61,7 +78,11 @@ impl MessageHandler for PropAnalyzer {
|
||||||
prop_name: prop_name.to_string(),
|
prop_name: prop_name.to_string(),
|
||||||
})
|
})
|
||||||
.collect();
|
.collect();
|
||||||
props.sort_by(|a, b| a.identifier.cmp(&b.identifier));
|
props.sort_by(|a, b| {
|
||||||
|
a.table_name
|
||||||
|
.cmp(&b.table_name)
|
||||||
|
.then(a.prop_name.cmp(&b.prop_name))
|
||||||
|
});
|
||||||
props
|
props
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -121,6 +121,12 @@ impl From<&'static str> for SendTableName {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl PartialEq<&str> for SendTableName {
|
||||||
|
fn eq(&self, other: &&str) -> bool {
|
||||||
|
self.as_str() == *other
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
|
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
|
||||||
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
|
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
|
||||||
pub struct ParseSendTable {
|
pub struct ParseSendTable {
|
||||||
|
|
|
||||||
34695
src/demo/sendprop_gen.rs
34695
src/demo/sendprop_gen.rs
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue