subtr_actor/stats/export/
whiff.rs1use 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 for entry in self.complete_labeled_whiff_counts().entries {
98 visitor(ExportedStat::unsigned_labeled(
99 "whiff",
100 "whiff_count",
101 StatUnit::Count,
102 entry.labels,
103 entry.count,
104 ));
105 }
106 }
107}
108
109#[cfg(test)]
110#[path = "whiff_test.rs"]
111mod tests;