MCPcopy Create free account
hub / github.com/LaihoE/Python-demoparser / parse_datatable

Method parse_datatable

src/parsing/data_table.rs:19–75  ·  view source on GitHub ↗
(&mut self)

Source from the content-addressed store, hash-verified

17
18impl Demo {
19 pub fn parse_datatable(&mut self) {
20 /*
21 Parse datatables. These are the tables that entities refer to for values. If this fails then gg?
22 */
23 let _ = self.read_i32();
24 loop {
25 let _ = self.read_varint();
26 let size = self.read_varint();
27 let data = self.read_n_bytes(size);
28
29 let table = Message::parse_from_bytes(data);
30 match table {
31 Ok(t) => {
32 let table: CSVCMsg_SendTable = t;
33 if table.is_end() {
34 break;
35 }
36
37 self.dt_map.as_mut().unwrap().insert(
38 table.net_table_name.as_ref().unwrap().to_string(),
39 table.clone(),
40 );
41 }
42 Err(e) => {
43 panic!(
44 "Failed to parse datatable at tick {}. Error: {}",
45 self.tick, e
46 )
47 }
48 }
49 }
50
51 let class_count = self.read_short();
52 self.class_bits = (class_count as f32 + 1.).log2().ceil() as u32;
53 for _ in 0..class_count {
54 let id = self.read_short();
55 let _ = self.read_string();
56 let dt = self.read_string();
57
58 if self.parse_props {
59 let props = self.flatten_dt(&self.dt_map.as_ref().unwrap()[&dt], dt.clone());
60 let server_class = ServerClass { id, dt, props };
61 // Set baselines parsed earlier in stringtables.
62 // Happens when stringtable, with instancebaseline, comes
63 // before this event. Seems oddly complicated
64 match self.baseline_no_cls.get(&(id as u32)) {
65 Some(user_data) => {
66 parse_baselines(&user_data, &server_class, &mut self.baselines);
67 // Remove after being parsed
68 self.baseline_no_cls.remove(&(id as u32));
69 }
70 None => {}
71 }
72 self.serverclass_map.insert(id, server_class);
73 }
74 }
75 }
76 pub fn get_excl_props(&self, table: &CSVCMsg_SendTable) -> SmallVec<[Sendprop_t; 32]> {

Callers 1

parse_cmdMethod · 0.80

Calls 8

parse_baselinesFunction · 0.85
read_i32Method · 0.80
read_n_bytesMethod · 0.80
is_endMethod · 0.80
read_shortMethod · 0.80
flatten_dtMethod · 0.80
read_varintMethod · 0.45
read_stringMethod · 0.45

Tested by

no test coverage detected