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 { usePlayerScoresStore } from "@/store/playerScoresStore";
|
||||||
import { useSettingsStore } from "@/store/settingsStore";
|
import { useSettingsStore } from "@/store/settingsStore";
|
||||||
import { formatNumber } from "@/utils/number";
|
import { formatNumber } from "@/utils/number";
|
||||||
import { calcPpBoundary, getHighestPpPlay } from "@/utils/scoresaber/scores";
|
import {
|
||||||
|
calcPpBoundary,
|
||||||
|
getAveragePp,
|
||||||
|
getHighestPpPlay,
|
||||||
|
} from "@/utils/scoresaber/scores";
|
||||||
import {
|
import {
|
||||||
GlobeAsiaAustraliaIcon,
|
GlobeAsiaAustraliaIcon,
|
||||||
HomeIcon,
|
HomeIcon,
|
||||||
@ -179,6 +183,14 @@ export default function PlayerInfo({ playerData }: PlayerInfoProps) {
|
|||||||
getHighestPpPlay(playerId)?.toFixed(2),
|
getHighestPpPlay(playerId)?.toFixed(2),
|
||||||
)}pp`}
|
)}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
|
<Label
|
||||||
title="+ 1pp"
|
title="+ 1pp"
|
||||||
className="bg-[#8992e8]"
|
className="bg-[#8992e8]"
|
||||||
|
@ -168,3 +168,24 @@ export function getHighestPpPlay(playerId: string) {
|
|||||||
|
|
||||||
return rankedScorePps[0];
|
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