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 "times_caught_ahead_of_play_on_conceded_goals",
58 StatUnit::Count,
59 self.scoring_context.caught_ahead_of_play_on_conceded_goals,
60 ));
61 visitor(ExportedStat::unsigned(
62 "core",
63 "goal_against_boost_sample_count",
64 StatUnit::Count,
65 self.scoring_context.goal_against_boost_sample_count,
66 ));
67 visitor(ExportedStat::float(
68 "core",
69 "average_boost_on_goals_against",
70 StatUnit::Boost,
71 self.average_boost_on_goals_against(),
72 ));
73 visitor(ExportedStat::unsigned(
74 "core",
75 "goal_against_boost_leadup_sample_count",
76 StatUnit::Count,
77 self.scoring_context.goal_against_boost_leadup_sample_count,
78 ));
79 visitor(ExportedStat::float(
80 "core",
81 "average_boost_in_goal_against_leadup",
82 StatUnit::Boost,
83 self.average_boost_in_goal_against_leadup(),
84 ));
85 visitor(ExportedStat::float(
86 "core",
87 "average_min_boost_in_goal_against_leadup",
88 StatUnit::Boost,
89 self.average_min_boost_in_goal_against_leadup(),
90 ));
91 visitor(ExportedStat::unsigned(
92 "core",
93 "goal_against_position_sample_count",
94 StatUnit::Count,
95 self.scoring_context.goal_against_position_sample_count,
96 ));
97 visitor(ExportedStat::float(
98 "core",
99 "average_goal_against_position_x",
100 StatUnit::UnrealUnits,
101 self.average_goal_against_position_x(),
102 ));
103 visitor(ExportedStat::float(
104 "core",
105 "average_goal_against_position_y",
106 StatUnit::UnrealUnits,
107 self.average_goal_against_position_y(),
108 ));
109 visitor(ExportedStat::float(
110 "core",
111 "average_goal_against_position_z",
112 StatUnit::UnrealUnits,
113 self.average_goal_against_position_z(),
114 ));
115 visitor(ExportedStat::unsigned(
116 "core",
117 "scoring_goal_last_touch_position_sample_count",
118 StatUnit::Count,
119 self.scoring_context
120 .scoring_goal_last_touch_position_sample_count,
121 ));
122 visitor(ExportedStat::float(
123 "core",
124 "average_scoring_goal_last_touch_position_x",
125 StatUnit::UnrealUnits,
126 self.average_scoring_goal_last_touch_position_x(),
127 ));
128 visitor(ExportedStat::float(
129 "core",
130 "average_scoring_goal_last_touch_position_y",
131 StatUnit::UnrealUnits,
132 self.average_scoring_goal_last_touch_position_y(),
133 ));
134 visitor(ExportedStat::float(
135 "core",
136 "average_scoring_goal_last_touch_position_z",
137 StatUnit::UnrealUnits,
138 self.average_scoring_goal_last_touch_position_z(),
139 ));
140 visitor(ExportedStat::float(
141 "core",
142 "average_goal_time_after_kickoff",
143 StatUnit::Seconds,
144 self.average_goal_time_after_kickoff(),
145 ));
146 visitor(ExportedStat::float(
147 "core",
148 "median_goal_time_after_kickoff",
149 StatUnit::Seconds,
150 self.median_goal_time_after_kickoff(),
151 ));
152 visitor(ExportedStat::unsigned(
153 "core",
154 "goal_ball_air_time_sample_count",
155 StatUnit::Count,
156 self.scoring_context
157 .goal_ball_air_time
158 .goal_ball_air_time_sample_count,
159 ));
160 visitor(ExportedStat::float(
161 "core",
162 "average_goal_ball_air_time",
163 StatUnit::Seconds,
164 self.average_goal_ball_air_time(),
165 ));
166 visitor(ExportedStat::float(
167 "core",
168 "median_goal_ball_air_time",
169 StatUnit::Seconds,
170 self.median_goal_ball_air_time(),
171 ));
172 visitor(ExportedStat::unsigned(
173 "core",
174 "kickoff_goal_count",
175 StatUnit::Count,
176 self.scoring_context.goal_after_kickoff.kickoff_goal_count,
177 ));
178 visitor(ExportedStat::unsigned(
179 "core",
180 "short_goal_count",
181 StatUnit::Count,
182 self.scoring_context.goal_after_kickoff.short_goal_count,
183 ));
184 visitor(ExportedStat::unsigned(
185 "core",
186 "medium_goal_count",
187 StatUnit::Count,
188 self.scoring_context.goal_after_kickoff.medium_goal_count,
189 ));
190 visitor(ExportedStat::unsigned(
191 "core",
192 "long_goal_count",
193 StatUnit::Count,
194 self.scoring_context.goal_after_kickoff.long_goal_count,
195 ));
196 visitor(ExportedStat::float(
197 "core",
198 "shooting_percentage",
199 StatUnit::Percent,
200 self.shooting_percentage(),
201 ));
202 visitor(ExportedStat::unsigned(
203 "core",
204 "counter_attack_goal_count",
205 StatUnit::Count,
206 self.scoring_context.goal_buildup.counter_attack_goal_count,
207 ));
208 visitor(ExportedStat::unsigned(
209 "core",
210 "sustained_pressure_goal_count",
211 StatUnit::Count,
212 self.scoring_context
213 .goal_buildup
214 .sustained_pressure_goal_count,
215 ));
216 visitor(ExportedStat::unsigned(
217 "core",
218 "other_buildup_goal_count",
219 StatUnit::Count,
220 self.scoring_context.goal_buildup.other_buildup_goal_count,
221 ));
222 }
223}
224
225impl StatFieldProvider for CoreTeamStats {
226 fn visit_stat_fields(&self, visitor: &mut dyn FnMut(ExportedStat)) {
227 visitor(ExportedStat::signed(
228 "core",
229 "score",
230 StatUnit::Count,
231 self.score,
232 ));
233 visitor(ExportedStat::signed(
234 "core",
235 "goals",
236 StatUnit::Count,
237 self.goals,
238 ));
239 visitor(ExportedStat::signed(
240 "core",
241 "assists",
242 StatUnit::Count,
243 self.assists,
244 ));
245 visitor(ExportedStat::signed(
246 "core",
247 "saves",
248 StatUnit::Count,
249 self.saves,
250 ));
251 visitor(ExportedStat::signed(
252 "core",
253 "shots",
254 StatUnit::Count,
255 self.shots,
256 ));
257 visitor(ExportedStat::float(
258 "core",
259 "average_goal_time_after_kickoff",
260 StatUnit::Seconds,
261 self.average_goal_time_after_kickoff(),
262 ));
263 visitor(ExportedStat::float(
264 "core",
265 "median_goal_time_after_kickoff",
266 StatUnit::Seconds,
267 self.median_goal_time_after_kickoff(),
268 ));
269 visitor(ExportedStat::unsigned(
270 "core",
271 "goal_ball_air_time_sample_count",
272 StatUnit::Count,
273 self.scoring_context
274 .goal_ball_air_time
275 .goal_ball_air_time_sample_count,
276 ));
277 visitor(ExportedStat::float(
278 "core",
279 "average_goal_ball_air_time",
280 StatUnit::Seconds,
281 self.average_goal_ball_air_time(),
282 ));
283 visitor(ExportedStat::float(
284 "core",
285 "median_goal_ball_air_time",
286 StatUnit::Seconds,
287 self.median_goal_ball_air_time(),
288 ));
289 visitor(ExportedStat::unsigned(
290 "core",
291 "kickoff_goal_count",
292 StatUnit::Count,
293 self.scoring_context.goal_after_kickoff.kickoff_goal_count,
294 ));
295 visitor(ExportedStat::unsigned(
296 "core",
297 "short_goal_count",
298 StatUnit::Count,
299 self.scoring_context.goal_after_kickoff.short_goal_count,
300 ));
301 visitor(ExportedStat::unsigned(
302 "core",
303 "medium_goal_count",
304 StatUnit::Count,
305 self.scoring_context.goal_after_kickoff.medium_goal_count,
306 ));
307 visitor(ExportedStat::unsigned(
308 "core",
309 "long_goal_count",
310 StatUnit::Count,
311 self.scoring_context.goal_after_kickoff.long_goal_count,
312 ));
313 visitor(ExportedStat::float(
314 "core",
315 "shooting_percentage",
316 StatUnit::Percent,
317 self.shooting_percentage(),
318 ));
319 visitor(ExportedStat::unsigned(
320 "core",
321 "counter_attack_goal_count",
322 StatUnit::Count,
323 self.scoring_context.goal_buildup.counter_attack_goal_count,
324 ));
325 visitor(ExportedStat::unsigned(
326 "core",
327 "sustained_pressure_goal_count",
328 StatUnit::Count,
329 self.scoring_context
330 .goal_buildup
331 .sustained_pressure_goal_count,
332 ));
333 visitor(ExportedStat::unsigned(
334 "core",
335 "other_buildup_goal_count",
336 StatUnit::Count,
337 self.scoring_context.goal_buildup.other_buildup_goal_count,
338 ));
339 }
340}