Skip to main content

subtr_actor/stats/calculators/
possession_state.rs

1use 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}