Skip to main content

subtr_actor/stats/analysis_graph/nodes/
boost.rs

1use super::*;
2use crate::stats::calculators::*;
3use crate::*;
4
5pub struct BoostNode {
6    calculator: BoostCalculator,
7}
8
9impl BoostNode {
10    pub fn new() -> Self {
11        Self::with_config(BoostCalculatorConfig::default())
12    }
13
14    pub fn with_config(config: BoostCalculatorConfig) -> Self {
15        Self {
16            calculator: BoostCalculator::with_config(config),
17        }
18    }
19}
20
21impl_analysis_node! {
22    node = BoostNode,
23    state = BoostCalculator,
24    name = "boost",
25    dependencies = [
26        frame_info_dependency(),
27        gameplay_state_dependency(),
28        player_frame_state_dependency(),
29        frame_events_state_dependency(),
30        player_vertical_state_dependency(),
31        live_play_dependency(),
32    ],
33    inputs = {
34        frame_info: FrameInfo,
35        gameplay_state: GameplayState,
36        player_frame_state: PlayerFrameState,
37        frame_events_state: FrameEventsState,
38        player_vertical_state: PlayerVerticalState,
39        live_play_state: LivePlayState,
40    },
41    evaluate = |node| {
42        node.calculator.update_parts(
43            frame_info,
44            gameplay_state,
45            player_frame_state,
46            frame_events_state,
47            player_vertical_state,
48            live_play_state.counts_toward_player_motion(),
49        )
50    },
51    state_ref = |node| &node.calculator,
52}