1use crate::*;
2
3use super::*;
4
5impl StatFieldProvider for CorePlayerStats {
6 fn visit_stat_fields(&self, visitor: &mut dyn FnMut(ExportedStat)) {
7 visitor(ExportedStat::signed(
8 "core",
9 "score",
10 StatUnit::Count,
11 self.score,
12 ));
13 visitor(ExportedStat::signed(
14 "core",
15 "goals",
16 StatUnit::Count,
17 self.goals,
18 ));
19 visitor(ExportedStat::signed(
20 "core",
21 "assists",
22 StatUnit::Count,
23 self.assists,
24 ));
25 visitor(ExportedStat::signed(
26 "core",
27 "saves",
28 StatUnit::Count,
29 self.saves,
30 ));
31 visitor(ExportedStat::signed(
32 "core",
33 "shots",
34 StatUnit::Count,
35 self.shots,
36 ));
37 visitor(ExportedStat::unsigned(
38 "core",
39 "goals_conceded_while_last_defender",
40 StatUnit::Count,
41 self.scoring_context.goals_conceded_while_last_defender,
42 ));
43 visitor(ExportedStat::unsigned(
44 "core",
45 "goals_for_while_most_back",
46 StatUnit::Count,
47 self.scoring_context.goals_for_while_most_back,
48 ));
49 visitor(ExportedStat::unsigned(
50 "core",
51 "goals_against_while_most_back",
52 StatUnit::Count,
53 self.scoring_context.goals_against_while_most_back,
54 ));
55 visitor(ExportedStat::unsigned(
56 "core",
57 "goal_against_boost_sample_count",
58 StatUnit::Count,
59 self.scoring_context.goal_against_boost_sample_count,
60 ));
61 visitor(ExportedStat::float(
62 "core",
63 "average_boost_on_goals_against",
64 StatUnit::Boost,
65 self.average_boost_on_goals_against(),
66 ));
67 visitor(ExportedStat::unsigned(
68 "core",
69 "goal_against_boost_leadup_sample_count",
70 StatUnit::Count,
71 self.scoring_context.goal_against_boost_leadup_sample_count,
72 ));
73 visitor(ExportedStat::float(
74 "core",
75 "average_boost_in_goal_against_leadup",
76 StatUnit::Boost,
77 self.average_boost_in_goal_against_leadup(),
78 ));
79 visitor(ExportedStat::float(
80 "core",
81 "average_min_boost_in_goal_against_leadup",
82 StatUnit::Boost,
83 self.average_min_boost_in_goal_against_leadup(),
84 ));
85 visitor(ExportedStat::unsigned(
86 "core",
87 "goal_against_position_sample_count",
88 StatUnit::Count,
89 self.scoring_context.goal_against_position_sample_count,
90 ));
91 visitor(ExportedStat::float(
92 "core",
93 "average_goal_against_position_x",
94 StatUnit::UnrealUnits,
95 self.average_goal_against_position_x(),
96 ));
97 visitor(ExportedStat::float(
98 "core",
99 "average_goal_against_position_y",
100 StatUnit::UnrealUnits,
101 self.average_goal_against_position_y(),
102 ));
103 visitor(ExportedStat::float(
104 "core",
105 "average_goal_against_position_z",
106 StatUnit::UnrealUnits,
107 self.average_goal_against_position_z(),
108 ));
109 visitor(ExportedStat::unsigned(
110 "core",
111 "scoring_goal_last_touch_position_sample_count",
112 StatUnit::Count,
113 self.scoring_context
114 .scoring_goal_last_touch_position_sample_count,
115 ));
116 visitor(ExportedStat::float(
117 "core",
118 "average_scoring_goal_last_touch_position_x",
119 StatUnit::UnrealUnits,
120 self.average_scoring_goal_last_touch_position_x(),
121 ));
122 visitor(ExportedStat::float(
123 "core",
124 "average_scoring_goal_last_touch_position_y",
125 StatUnit::UnrealUnits,
126 self.average_scoring_goal_last_touch_position_y(),
127 ));
128 visitor(ExportedStat::float(
129 "core",
130 "average_scoring_goal_last_touch_position_z",
131 StatUnit::UnrealUnits,
132 self.average_scoring_goal_last_touch_position_z(),
133 ));
134 visitor(ExportedStat::float(
135 "core",
136 "average_goal_time_after_kickoff",
137 StatUnit::Seconds,
138 self.average_goal_time_after_kickoff(),
139 ));
140 visitor(ExportedStat::float(
141 "core",
142 "median_goal_time_after_kickoff",
143 StatUnit::Seconds,
144 self.median_goal_time_after_kickoff(),
145 ));
146 visitor(ExportedStat::unsigned(
147 "core",
148 "kickoff_goal_count",
149 StatUnit::Count,
150 self.scoring_context.goal_after_kickoff.kickoff_goal_count,
151 ));
152 visitor(ExportedStat::unsigned(
153 "core",
154 "short_goal_count",
155 StatUnit::Count,
156 self.scoring_context.goal_after_kickoff.short_goal_count,
157 ));
158 visitor(ExportedStat::unsigned(
159 "core",
160 "medium_goal_count",
161 StatUnit::Count,
162 self.scoring_context.goal_after_kickoff.medium_goal_count,
163 ));
164 visitor(ExportedStat::unsigned(
165 "core",
166 "long_goal_count",
167 StatUnit::Count,
168 self.scoring_context.goal_after_kickoff.long_goal_count,
169 ));
170 visitor(ExportedStat::float(
171 "core",
172 "shooting_percentage",
173 StatUnit::Percent,
174 self.shooting_percentage(),
175 ));
176 visitor(ExportedStat::unsigned(
177 "core",
178 "counter_attack_goal_count",
179 StatUnit::Count,
180 self.scoring_context.goal_buildup.counter_attack_goal_count,
181 ));
182 visitor(ExportedStat::unsigned(
183 "core",
184 "sustained_pressure_goal_count",
185 StatUnit::Count,
186 self.scoring_context
187 .goal_buildup
188 .sustained_pressure_goal_count,
189 ));
190 visitor(ExportedStat::unsigned(
191 "core",
192 "other_buildup_goal_count",
193 StatUnit::Count,
194 self.scoring_context.goal_buildup.other_buildup_goal_count,
195 ));
196 }
197}
198
199impl StatFieldProvider for CoreTeamStats {
200 fn visit_stat_fields(&self, visitor: &mut dyn FnMut(ExportedStat)) {
201 visitor(ExportedStat::signed(
202 "core",
203 "score",
204 StatUnit::Count,
205 self.score,
206 ));
207 visitor(ExportedStat::signed(
208 "core",
209 "goals",
210 StatUnit::Count,
211 self.goals,
212 ));
213 visitor(ExportedStat::signed(
214 "core",
215 "assists",
216 StatUnit::Count,
217 self.assists,
218 ));
219 visitor(ExportedStat::signed(
220 "core",
221 "saves",
222 StatUnit::Count,
223 self.saves,
224 ));
225 visitor(ExportedStat::signed(
226 "core",
227 "shots",
228 StatUnit::Count,
229 self.shots,
230 ));
231 visitor(ExportedStat::float(
232 "core",
233 "average_goal_time_after_kickoff",
234 StatUnit::Seconds,
235 self.average_goal_time_after_kickoff(),
236 ));
237 visitor(ExportedStat::float(
238 "core",
239 "median_goal_time_after_kickoff",
240 StatUnit::Seconds,
241 self.median_goal_time_after_kickoff(),
242 ));
243 visitor(ExportedStat::unsigned(
244 "core",
245 "kickoff_goal_count",
246 StatUnit::Count,
247 self.scoring_context.goal_after_kickoff.kickoff_goal_count,
248 ));
249 visitor(ExportedStat::unsigned(
250 "core",
251 "short_goal_count",
252 StatUnit::Count,
253 self.scoring_context.goal_after_kickoff.short_goal_count,
254 ));
255 visitor(ExportedStat::unsigned(
256 "core",
257 "medium_goal_count",
258 StatUnit::Count,
259 self.scoring_context.goal_after_kickoff.medium_goal_count,
260 ));
261 visitor(ExportedStat::unsigned(
262 "core",
263 "long_goal_count",
264 StatUnit::Count,
265 self.scoring_context.goal_after_kickoff.long_goal_count,
266 ));
267 visitor(ExportedStat::float(
268 "core",
269 "shooting_percentage",
270 StatUnit::Percent,
271 self.shooting_percentage(),
272 ));
273 visitor(ExportedStat::unsigned(
274 "core",
275 "counter_attack_goal_count",
276 StatUnit::Count,
277 self.scoring_context.goal_buildup.counter_attack_goal_count,
278 ));
279 visitor(ExportedStat::unsigned(
280 "core",
281 "sustained_pressure_goal_count",
282 StatUnit::Count,
283 self.scoring_context
284 .goal_buildup
285 .sustained_pressure_goal_count,
286 ));
287 visitor(ExportedStat::unsigned(
288 "core",
289 "other_buildup_goal_count",
290 StatUnit::Count,
291 self.scoring_context.goal_buildup.other_buildup_goal_count,
292 ));
293 }
294}