source2_demo/parser/
context.rs1use crate::entity::field::*;
2use crate::entity::*;
3use crate::event::*;
4use crate::string_table::*;
5use crate::HashMap;
6use source2_demo_protobufs::CDemoFileInfo;
7use std::rc::Rc;
8
9pub struct Context {
11 pub(crate) classes: Classes,
12 pub(crate) entities: Entities,
13 pub(crate) string_tables: StringTables,
14 pub(crate) game_events: GameEventList,
15
16 pub(crate) tick: u32,
17 pub(crate) previous_tick: u32,
18 pub(crate) net_tick: u32,
19
20 pub(crate) game_build: u32,
21 pub(crate) replay_info: CDemoFileInfo,
22
23 pub(crate) baselines: BaselineContainer,
24 pub(crate) serializers: HashMap<Box<str>, Rc<Serializer>>,
25 pub(crate) last_full_packet_tick: u32,
26}
27
28impl Default for Context {
29 fn default() -> Self {
30 Context {
31 classes: Classes::default(),
32 entities: Entities::default(),
33 string_tables: StringTables::default(),
34 game_events: Default::default(),
35 tick: u32::MAX,
36 previous_tick: u32::MAX,
37 net_tick: u32::MAX,
38 game_build: 0,
39 replay_info: CDemoFileInfo::default(),
40 baselines: BaselineContainer::default(),
41 serializers: HashMap::default(),
42 last_full_packet_tick: u32::MAX,
43 }
44 }
45}
46
47impl Context {
48 pub fn new(replay_info: CDemoFileInfo) -> Self {
49 Context {
50 replay_info,
51 ..Default::default()
52 }
53 }
54}
55
56impl Context {
57 pub fn classes(&self) -> &Classes {
58 &self.classes
59 }
60
61 pub fn entities(&self) -> &Entities {
62 &self.entities
63 }
64
65 pub fn string_tables(&self) -> &StringTables {
66 &self.string_tables
67 }
68
69 pub fn game_events(&self) -> &GameEventList {
70 &self.game_events
71 }
72
73 pub fn tick(&self) -> u32 {
74 self.tick
75 }
76
77 pub fn net_tick(&self) -> u32 {
78 self.net_tick
79 }
80
81 pub fn game_build(&self) -> u32 {
82 self.game_build
83 }
84
85 pub fn replay_info(&self) -> &CDemoFileInfo {
86 &self.replay_info
87 }
88}