Files
hypixel-stats/src/lib/hypixel/uhc/general.ts
2025-09-04 23:00:24 +02:00

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
}