source2_demo/parser/
context.rs

1use 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
9/// Current replay state.
10pub 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}