diff --git a/src/app/(stats)/player/[ign]/_stats/blitz/blitz.tsx b/src/app/(stats)/player/[ign]/_stats/blitz/blitz.tsx
index d58857b..e314f0d 100644
--- a/src/app/(stats)/player/[ign]/_stats/blitz/blitz.tsx
+++ b/src/app/(stats)/player/[ign]/_stats/blitz/blitz.tsx
@@ -6,7 +6,7 @@ import { NonNullStats } from "@/lib/schema/player"
import { cn } from "@/lib/utils"
import GeneralStats from "../GeneralStats"
import BlitzGeneralStats from "./stats"
-import { BlitzModeStatsTable } from "./table"
+import { BlitzKitStatsTable, BlitzModeStatsTable } from "./table"
export default function BlitzStats({ stats }: { stats: NonNullStats["Blitz"] }) {
if (!stats) return null
@@ -47,6 +47,7 @@ export default function BlitzStats({ stats }: { stats: NonNullStats["Blitz"] })
+
)
}
diff --git a/src/app/(stats)/player/[ign]/_stats/blitz/table.tsx b/src/app/(stats)/player/[ign]/_stats/blitz/table.tsx
index 0a3d973..9225806 100644
--- a/src/app/(stats)/player/[ign]/_stats/blitz/table.tsx
+++ b/src/app/(stats)/player/[ign]/_stats/blitz/table.tsx
@@ -1,6 +1,9 @@
import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table"
-import { formatNumber } from "@/lib/formatters"
+import { formatNumber, formatSecondsToTime } from "@/lib/formatters"
+import { getAllBlitzKitStats, getBlitzKitLevel, getBlitzKitName, getBlitzMostPlayedKit } from "@/lib/hypixel/blitz/general"
+import { romanize } from "@/lib/hypixel/general"
import { NonNullStats } from "@/lib/schema/player"
+import { cn } from "@/lib/utils"
export function BlitzModeStatsTable({ stats }: { stats: NonNullable }) {
return (
@@ -27,3 +30,55 @@ export function BlitzModeStatsTable({ stats }: { stats: NonNullable
)
}
+
+export function BlitzKitStatsTableHeader() {
+ const headerElements = [
+ "Kit",
+ "Exp",
+ "Prestige",
+ "Kills",
+ "Wins",
+ "Losses",
+ "WL",
+ "Time Played"
+ ]
+
+ return (
+
+
+ {headerElements.map((v, i) => {v})}
+
+
+ )
+}
+
+export function BlitzKitStatsTable({ stats }: { stats: NonNullable }) {
+ const kitStats = getAllBlitzKitStats(stats)
+ return (
+
+
+
+ {kitStats.map((r, i) => {
+ const { id, nums } = r
+ const kitName = getBlitzKitName(id)
+ const kitLevel = getBlitzKitLevel(id, stats)
+ const mostPlayed = getBlitzMostPlayedKit(stats)?.id
+ return (
+
+ {`${kitName} ${romanize(kitLevel)}`}
+ {nums.map((v, j) => {
+ if (j === nums.length - 1) {
+ return {formatSecondsToTime(v)}
+ }
+ if (j === 1) {
+ return {v === 0 ? "-" : romanize(v)}
+ }
+ return {formatNumber(v)}
+ })}
+
+ )
+ })}
+
+
+ )
+}
diff --git a/src/lib/hypixel/blitz/general.ts b/src/lib/hypixel/blitz/general.ts
index 780343a..93dbb63 100644
--- a/src/lib/hypixel/blitz/general.ts
+++ b/src/lib/hypixel/blitz/general.ts
@@ -1,5 +1,21 @@
-import { KITS } from "@/data/hypixel/blitz"
+import { KITEXP, KITS } from "@/data/hypixel/blitz"
import { NonNullStats } from "@/lib/schema/player"
+import { devide } from "../general"
+
+export function getBlitzKitLevel(kitId: typeof KITS[number]["id"], stats: NonNullable) {
+ let level = stats[kitId]
+ if (level === -1) {
+ const exp = stats[`exp_${kitId}`]
+ for (const kitexp of KITEXP.slice()) {
+ if (exp >= kitexp) {
+ level++
+ } else {
+ break
+ }
+ }
+ }
+ return level + 1
+}
export function getBlitzMostPlayedKit(stats: NonNullable) {
let mostPlayedKit: typeof KITS[number] | null = null
@@ -15,3 +31,34 @@ export function getBlitzMostPlayedKit(stats: NonNullable)
return mostPlayedKit
}
+
+export function getBlitzKitName(kitId: typeof KITS[number]["id"]) {
+ return KITS.find(k => k.id === kitId)!.name
+}
+
+export function getAllBlitzKitStats(stats: NonNullable) {
+ const nums: { id: typeof KITS[number]["id"], nums: number[] }[] = []
+
+ for (const kit of KITS) {
+ nums.push({ id: kit.id, nums: getBlitzKitStats(kit.id, stats) })
+ }
+
+ console.log(nums)
+
+ return nums
+}
+
+export function getBlitzKitStats(kitId: typeof KITS[number]["id"], stats: NonNullable) {
+ const wins = stats[`wins_${kitId}`] + stats[`wins_teams_${kitId}`]
+ const losses = stats[`games_played_${kitId}`] - wins
+
+ return [
+ stats[`exp_${kitId}`],
+ stats[`p${kitId}`],
+ stats[`kills_${kitId}`],
+ wins,
+ losses,
+ devide(wins, losses),
+ stats[`time_played_${kitId}`]
+ ]
+}
diff --git a/src/lib/schema/stats.ts b/src/lib/schema/stats.ts
index a72900f..9736fc2 100644
--- a/src/lib/schema/stats.ts
+++ b/src/lib/schema/stats.ts
@@ -837,22 +837,30 @@ function blitzKitPlayedStats() {
] as const
const stats = [
- "time_played"
+ "wins",
+ "wins_teams",
+ "time_played",
+ "exp",
+ "kills",
+ "games_played"
] as const
const entries = new Map>()
const kits = new Map>()
+ const prestiges = new Map>()
for (const id of ids) {
for (const stat of stats) {
entries.set(`${stat}_${id}`, z.number().default(0))
- kits.set(`${id}`, z.number().default(0))
+ kits.set(`${id}`, z.number().default(-1))
+ prestiges.set(`p${id}`, z.number().default(0))
}
}
return {
stats: Object.fromEntries(entries) as Record<`${typeof stats[number]}_${typeof ids[number]}`, z.ZodDefault>,
- kits: Object.fromEntries(entries) as Record<`${typeof ids[number]}`, z.ZodDefault>
+ kits: Object.fromEntries(kits) as Record<`${typeof ids[number]}`, z.ZodDefault>,
+ prestiges: Object.fromEntries(prestiges) as Record<`p${typeof ids[number]}`, z.ZodDefault>
}
}
@@ -867,5 +875,6 @@ export const blitzStatsSchema = z.object({
damage: z.number().default(0),
damage_taken: z.number().default(0),
...blitzKitPlayedStats().stats,
- ...blitzKitPlayedStats().kits
+ ...blitzKitPlayedStats().kits,
+ ...blitzKitPlayedStats().prestiges
})