Skip to main content

subtr_actor/stats/analysis_graph/nodes/
territorial_pressure.rs

1use super::*;
2use crate::stats::calculators::*;
3use crate::*;
4
5/// Tracks territorial pressure sessions from ball/possession state during live play.
6pub struct TerritorialPressureNode {
7    calculator: TerritorialPressureCalculator,
8}
9
10impl TerritorialPressureNode {
11    pub fn new() -> Self {
12        Self::with_config(TerritorialPressureCalculatorConfig::default())
13    }
14
15    pub fn with_config(config: TerritorialPressureCalculatorConfig) -> Self {
16        Self {
17            calculator: TerritorialPressureCalculator::with_config(config),
18        }
19    }
20}
21
22impl_analysis_node! {
23    node = TerritorialPressureNode,
24    state = TerritorialPressureCalculator,
25    name = "territorial_pressure",
26    emitted_events = crate::stats::calculators::TERRITORIAL_BALL_HALF_EMITTED_EVENTS,
27    dependencies = [
28        frame_info_dependency() => FrameInfo,
29        ball_frame_state_dependency() => BallFrameState,
30        possession_state_dependency() => PossessionState,
31        live_play_dependency() => LivePlayState,
32    ],
33    call = calculator.update,
34    finish = calculator.finish,
35}