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            "grounded_whiff_count",
16            StatUnit::Count,
17            self.grounded_whiff_count,
18        ));
19        visitor(ExportedStat::unsigned(
20            "whiff",
21            "aerial_whiff_count",
22            StatUnit::Count,
23            self.aerial_whiff_count,
24        ));
25        visitor(ExportedStat::unsigned(
26            "whiff",
27            "dodge_whiff_count",
28            StatUnit::Count,
29            self.dodge_whiff_count,
30        ));
31        visitor(ExportedStat::unsigned(
32            "whiff",
33            "is_last_whiff",
34            StatUnit::Count,
35            u32::from(self.is_last_whiff),
36        ));
37        if let Some(value) = self.last_whiff_time {
38            visitor(ExportedStat::float(
39                "whiff",
40                "last_whiff_time",
41                StatUnit::Seconds,
42                value,
43            ));
44        }
45        if let Some(value) = self.last_whiff_frame {
46            visitor(ExportedStat::unsigned(
47                "whiff",
48                "last_whiff_frame",
49                StatUnit::Count,
50                u32::try_from(value).unwrap_or(u32::MAX),
51            ));
52        }
53        if let Some(value) = self.time_since_last_whiff {
54            visitor(ExportedStat::float(
55                "whiff",
56                "time_since_last_whiff",
57                StatUnit::Seconds,
58                value,
59            ));
60        }
61        if let Some(value) = self.frames_since_last_whiff {
62            visitor(ExportedStat::unsigned(
63                "whiff",
64                "frames_since_last_whiff",
65                StatUnit::Count,
66                u32::try_from(value).unwrap_or(u32::MAX),
67            ));
68        }
69        if let Some(value) = self.last_closest_approach_distance {
70            visitor(ExportedStat::float(
71                "whiff",
72                "last_closest_approach_distance",
73                StatUnit::UnrealUnits,
74                value,
75            ));
76        }
77        if let Some(value) = self.best_closest_approach_distance {
78            visitor(ExportedStat::float(
79                "whiff",
80                "best_closest_approach_distance",
81                StatUnit::UnrealUnits,
82                value,
83            ));
84        }
85        visitor(ExportedStat::float(
86            "whiff",
87            "average_closest_approach_distance",
88            StatUnit::UnrealUnits,
89            self.average_closest_approach_distance(),
90        ));
91    }
92}