This commit is contained in:
parent
58ddf3d79a
commit
154eec2aac
@ -2,7 +2,11 @@ import { ScoresaberPlayer } from "@/schemas/scoresaber/player";
|
||||
import { usePlayerScoresStore } from "@/store/playerScoresStore";
|
||||
import { useSettingsStore } from "@/store/settingsStore";
|
||||
import { formatNumber } from "@/utils/number";
|
||||
import { calcPpBoundary, getHighestPpPlay } from "@/utils/scoresaber/scores";
|
||||
import {
|
||||
calcPpBoundary,
|
||||
getAveragePp,
|
||||
getHighestPpPlay,
|
||||
} from "@/utils/scoresaber/scores";
|
||||
import {
|
||||
GlobeAsiaAustraliaIcon,
|
||||
HomeIcon,
|
||||
@ -179,6 +183,14 @@ export default function PlayerInfo({ playerData }: PlayerInfoProps) {
|
||||
getHighestPpPlay(playerId)?.toFixed(2),
|
||||
)}pp`}
|
||||
/>
|
||||
<Label
|
||||
title="Avg PP"
|
||||
className="bg-[#8992e8]"
|
||||
hoverValue="Average amount of pp per play (best 20 scores)"
|
||||
value={`${formatNumber(
|
||||
getAveragePp(playerId)?.toFixed(2),
|
||||
)}pp`}
|
||||
/>
|
||||
<Label
|
||||
title="+ 1pp"
|
||||
className="bg-[#8992e8]"
|
||||
|
@ -168,3 +168,24 @@ export function getHighestPpPlay(playerId: string) {
|
||||
|
||||
return rankedScorePps[0];
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the average pp of the player
|
||||
*
|
||||
* @param playerId the player id
|
||||
* @param limit the amount of top scores to average (default: 20)
|
||||
*/
|
||||
export function getAveragePp(playerId: string, limit: number = 20) {
|
||||
const rankedScores = usePlayerScoresStore
|
||||
.getState()
|
||||
.players.find((p) => p.id === playerId)
|
||||
?.scores?.filter((s) => s.score.pp !== undefined);
|
||||
if (!rankedScores) return null;
|
||||
|
||||
const rankedScorePps = rankedScores
|
||||
.map((s) => s.score.pp)
|
||||
.sort((a, b) => b - a)
|
||||
.slice(0, limit);
|
||||
|
||||
return getTotalPpFromSortedPps(rankedScorePps, 0) / limit;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user