Files
blitzkit/packages/core/src/statistics/sumAllStats.ts
T

33 lines
1.2 KiB
TypeScript
Raw Normal View History

2024-09-07 21:45:00 -05:00
import { emptyAllStats } from '..';
2024-08-10 13:29:10 -05:00
import { BlitzStats } from './compositeStats/constants';
2023-05-29 17:44:32 +00:00
2024-09-08 10:15:42 -05:00
export function sumAllStats(allStatsCollection: BlitzStats[]) {
2023-05-29 17:44:32 +00:00
return allStatsCollection.reduce((accumulated, current) => {
2024-08-10 13:29:10 -05:00
function sum(value: (allStats: BlitzStats) => number) {
2023-05-29 17:44:32 +00:00
return value(accumulated) + value(current);
}
2024-08-10 13:29:10 -05:00
function max(value: (allStats: BlitzStats) => number) {
2023-05-29 17:44:32 +00:00
return Math.max(value(accumulated), value(current));
}
return {
battles: sum((a) => a.battles),
wins: sum((a) => a.wins),
capture_points: sum((a) => a.capture_points),
damage_dealt: sum((a) => a.damage_dealt),
damage_received: sum((a) => a.damage_received),
dropped_capture_points: sum((a) => a.dropped_capture_points),
frags: sum((a) => a.frags),
frags8p: sum((a) => a.frags8p),
hits: sum((a) => a.hits),
losses: sum((a) => a.losses),
max_frags: max((a) => a.max_frags),
max_xp: max((a) => a.max_xp),
shots: sum((a) => a.shots),
spotted: sum((a) => a.spotted),
survived_battles: sum((a) => a.survived_battles),
win_and_survived: sum((a) => a.win_and_survived),
xp: sum((a) => a.xp),
2024-08-10 13:29:10 -05:00
} satisfies BlitzStats;
2023-05-29 17:44:32 +00:00
}, emptyAllStats);
}