95 lines
2.6 KiB
TypeScript
95 lines
2.6 KiB
TypeScript
import { MODES } from "@/data/hypixel/uhc"
|
|
import { NonNullStats } from "@/lib/schema/player"
|
|
import { devide } from "../general"
|
|
|
|
export function getStatsCombined(stats: NonNullable<NonNullStats["UHC"]>) {
|
|
return {
|
|
wins: getUHCWins(stats),
|
|
kills: getUHCKills(stats),
|
|
deaths: getUHCDeaths(stats),
|
|
heads: getUHCHeads(stats)
|
|
}
|
|
}
|
|
|
|
export function getUHCModeName(modeId: typeof MODES[number]["id"]) {
|
|
return MODES.find(m => m.id === modeId)!.name
|
|
}
|
|
|
|
export function getUHCModeStats(modeId: typeof MODES[number]["id"] | "all_modes", stats: NonNullable<NonNullStats["UHC"]>) {
|
|
if (modeId === "all_modes") {
|
|
const statsCombined = getStatsCombined(stats)
|
|
return [
|
|
statsCombined.kills,
|
|
statsCombined.deaths,
|
|
devide(statsCombined.kills, statsCombined.deaths),
|
|
statsCombined.wins,
|
|
devide(statsCombined.kills, statsCombined.kills),
|
|
statsCombined.heads
|
|
]
|
|
}
|
|
|
|
if (modeId === "") {
|
|
return [
|
|
stats[`kills`],
|
|
stats[`deaths`],
|
|
devide(stats[`kills`], stats[`deaths`]),
|
|
stats[`wins`],
|
|
devide(stats[`kills`], stats[`wins`]),
|
|
stats[`heads_eaten`]
|
|
]
|
|
}
|
|
|
|
return [
|
|
stats[`kills_${modeId}`],
|
|
stats[`deaths_${modeId}`],
|
|
devide(stats[`kills_${modeId}`], stats[`deaths_${modeId}`]),
|
|
stats[`wins_${modeId}`],
|
|
devide(stats[`kills_${modeId}`], stats[`wins_${modeId}`]),
|
|
stats[`heads_eaten_${modeId}`]
|
|
]
|
|
}
|
|
|
|
function getUHCWins(stats: NonNullable<NonNullStats["UHC"]>) {
|
|
let wins = 0
|
|
const ids = MODES.filter(m => m.id !== "").map(m => m.id)
|
|
|
|
for (const id of ids) {
|
|
wins = wins + stats[`wins_${id}`]
|
|
}
|
|
|
|
return wins + stats.wins
|
|
}
|
|
|
|
function getUHCKills(stats: NonNullable<NonNullStats["UHC"]>) {
|
|
let kills = 0
|
|
const ids = MODES.filter(m => m.id !== "").map(m => m.id)
|
|
|
|
for (const id of ids) {
|
|
kills = kills + stats[`kills_${id}`]
|
|
}
|
|
|
|
return kills + stats.kills
|
|
}
|
|
|
|
function getUHCDeaths(stats: NonNullable<NonNullStats["UHC"]>) {
|
|
let deaths = 0
|
|
const ids = MODES.filter(m => m.id !== "").map(m => m.id)
|
|
|
|
for (const id of ids) {
|
|
deaths = deaths + stats[`deaths_${id}`]
|
|
}
|
|
|
|
return deaths + stats.deaths
|
|
}
|
|
|
|
function getUHCHeads(stats: NonNullable<NonNullStats["UHC"]>) {
|
|
let heads = 0
|
|
const ids = MODES.filter(m => m.id !== "").map(m => m.id)
|
|
|
|
for (const id of ids) {
|
|
heads = heads + stats[`heads_eaten_${id}`]
|
|
}
|
|
|
|
return heads + stats.heads_eaten
|
|
}
|