import { MODES } from "@/data/hypixel/uhc" import { NonNullStats } from "@/lib/schema/player" import { devide } from "../general" export function getStatsCombined(stats: NonNullable) { 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) { 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) { 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) { 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) { 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) { 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 }