Skip to main content

subtr_actor/stats/export/
whiff.rs

1use crate::*;
2
3use super::*;
4
5impl StatFieldProvider for WhiffStats {
6    fn visit_stat_fields(&self, visitor: &mut dyn FnMut(ExportedStat)) {
7        visitor(ExportedStat::unsigned(
8            "whiff",
9            "whiff_count",
10            StatUnit::Count,
11            self.whiff_count,
12        ));
13        visitor(ExportedStat::unsigned(
14            "whiff",
15            "beaten_to_ball_count",
16            StatUnit::Count,
17            self.beaten_to_ball_count,
18        ));
19        visitor(ExportedStat::unsigned(
20            "whiff",
21            "grounded_whiff_count",
22            StatUnit::Count,
23            self.grounded_whiff_count,
24        ));
25        visitor(ExportedStat::unsigned(
26            "whiff",
27            "aerial_whiff_count",
28            StatUnit::Count,
29            self.aerial_whiff_count,
30        ));
31        visitor(ExportedStat::unsigned(
32            "whiff",
33            "dodge_whiff_count",
34            StatUnit::Count,
35            self.dodge_whiff_count,
36        ));
37        visitor(ExportedStat::unsigned(
38            "whiff",
39            "is_last_whiff",
40            StatUnit::Count,
41            u32::from(self.is_last_whiff),
42        ));
43        if let Some(value) = self.last_whiff_time {
44            visitor(ExportedStat::float(
45                "whiff",
46                "last_whiff_time",
47                StatUnit::Seconds,
48                value,
49            ));
50        }
51        if let Some(value) = self.last_whiff_frame {
52            visitor(ExportedStat::unsigned(
53                "whiff",
54                "last_whiff_frame",
55                StatUnit::Count,
56                u32::try_from(value).unwrap_or(u32::MAX),
57            ));
58        }
59        if let Some(value) = self.time_since_last_whiff {
60            visitor(ExportedStat::float(
61                "whiff",
62                "time_since_last_whiff",
63                StatUnit::Seconds,
64                value,
65            ));
66        }
67        if let Some(value) = self.frames_since_last_whiff {
68            visitor(ExportedStat::unsigned(
69                "whiff",
70                "frames_since_last_whiff",
71                StatUnit::Count,
72                u32::try_from(value).unwrap_or(u32::MAX),
73            ));
74        }
75        if let Some(value) = self.last_closest_approach_distance {
76            visitor(ExportedStat::float(
77                "whiff",
78                "last_closest_approach_distance",
79                StatUnit::UnrealUnits,
80                value,
81            ));
82        }
83        if let Some(value) = self.best_closest_approach_distance {
84            visitor(ExportedStat::float(
85                "whiff",
86                "best_closest_approach_distance",
87                StatUnit::UnrealUnits,
88                value,
89            ));
90        }
91        visitor(ExportedStat::float(
92            "whiff",
93            "average_closest_approach_distance",
94            StatUnit::UnrealUnits,
95            self.average_closest_approach_distance(),
96        ));
97    }
98}