subtr_actor/stats/calculators/
possession_state.rs1use super::*;
2
3#[derive(Debug, Clone, Default)]
4pub struct PossessionState {
5 pub active_team_before_sample: Option<bool>,
6 pub current_team_is_team_0: Option<bool>,
7 pub active_player_before_sample: Option<PlayerId>,
8 pub current_player: Option<PlayerId>,
9}
10
11#[derive(Default)]
12pub struct PossessionStateCalculator {
13 tracker: PossessionTracker,
14}
15
16impl PossessionStateCalculator {
17 pub fn new() -> Self {
18 Self::default()
19 }
20
21 pub fn update(
22 &mut self,
23 frame: &FrameInfo,
24 touch_state: &TouchState,
25 live_play_state: &LivePlayState,
26 ) -> PossessionState {
27 if !live_play_state.is_live_play {
28 self.tracker.reset();
29 return PossessionState::default();
30 }
31
32 self.tracker.update(frame.time, &touch_state.touch_events)
33 }
34}