diff --git a/src/app/(stats)/player/[ign]/_stats/build-battle/build-battle.tsx b/src/app/(stats)/player/[ign]/_stats/build-battle/build-battle.tsx index febd4da..1da6797 100644 --- a/src/app/(stats)/player/[ign]/_stats/build-battle/build-battle.tsx +++ b/src/app/(stats)/player/[ign]/_stats/build-battle/build-battle.tsx @@ -7,6 +7,7 @@ import { NonNullStats } from "@/lib/schema/player" import CollapsedStats from "../../_components/CollapsedStats" import BuildBattleTitleProgress from "./progress" import BuildBattleGeneralStats from "./stats" +import BuildBattleStatsTable from "./table" export default function BuildBattleStats({ stats }: { stats: NonNullStats["BuildBattle"] }) { if (!stats) return null @@ -40,6 +41,8 @@ export default function BuildBattleStats({ stats }: { stats: NonNullStats["Build + + diff --git a/src/app/(stats)/player/[ign]/_stats/build-battle/table.tsx b/src/app/(stats)/player/[ign]/_stats/build-battle/table.tsx new file mode 100644 index 0000000..7546a32 --- /dev/null +++ b/src/app/(stats)/player/[ign]/_stats/build-battle/table.tsx @@ -0,0 +1,46 @@ +import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table" +import { MODES } from "@/data/hypixel/build-battle" +import { formatNumber } from "@/lib/formatters" +import { getBuildBattleModeName as getBuildBattleMode } from "@/lib/hypixel/build-battle/general" +import { NonNullStats } from "@/lib/schema/player" + +export default function BuildBattleStatsTable({ stats }: { stats: NonNullable }) { + return ( + + + + Mode + Wins + + + + + + + + + + +
+ ) +} + +function TableStat({ modeId, stats }: { modeId: typeof MODES[number]["id"], stats: NonNullable }) { + const mode = getBuildBattleMode(modeId) + + if (modeId === "") { + return ( + + {mode.name} + {formatNumber(stats["wins"])} + + ) + } + + return ( + + {mode.name} + {formatNumber(stats[`wins_${modeId}`])} + + ) +} diff --git a/src/data/hypixel/build-battle.ts b/src/data/hypixel/build-battle.ts index 34c4a50..e89a1a6 100644 --- a/src/data/hypixel/build-battle.ts +++ b/src/data/hypixel/build-battle.ts @@ -1,10 +1,10 @@ export const TITLE = "Build Battle" as const export const MODES = [ - { id: "_solo_normal", name: "Solo" }, - { id: "_teams_normal", name: "Teams" }, - { id: "_guess_the_build", name: "Guess the Build" }, - { id: "_solo_pro", name: "Pro" }, - { id: "_speed_builders", name: "Speed Builders" }, + { id: "solo_normal", name: "Solo" }, + { id: "teams_normal", name: "Teams" }, + { id: "guess_the_build", name: "Guess the Build" }, + { id: "solo_pro", name: "Pro" }, + { id: "speed_builders", name: "Speed Builders" }, { id: "", name: "Overall" } ] as const export const STARS = [ diff --git a/src/lib/hypixel/build-battle/general.ts b/src/lib/hypixel/build-battle/general.ts index b1c0be2..793e4b2 100644 --- a/src/lib/hypixel/build-battle/general.ts +++ b/src/lib/hypixel/build-battle/general.ts @@ -1,4 +1,4 @@ -import { STARS } from "@/data/hypixel/build-battle" +import { MODES, STARS } from "@/data/hypixel/build-battle" export function getBuildBattleRank(score: number) { for (let i = STARS.length - 1; i >= 0; i--) { @@ -14,3 +14,7 @@ export function getNextBuildBattleRank(score: number) { return next > STARS.length - 1 ? null : STARS[next] } + +export function getBuildBattleModeName(id: typeof MODES[number]["id"]) { + return MODES.find(m => m.id === id)! +} diff --git a/src/lib/schema/stats.ts b/src/lib/schema/stats.ts index 4db59a5..1785694 100644 --- a/src/lib/schema/stats.ts +++ b/src/lib/schema/stats.ts @@ -392,5 +392,15 @@ export const buildBattleStatsSchema = z.looseObject({ coins: z.number().default(0), games_played: z.number().default(0), correct_guesses: z.number().default(0), - super_votes: z.number().default(0) + super_votes: z.number().default(0), + wins_solo_normal: z.number().default(0), + wins_teams_normal: z.number().default(0), + wins_guess_the_build: z.number().default(0), + wins_solo_pro: z.number().default(0), + wins_speed_builders: z.number().default(0), + wins_solo_normal_latest: z.number().default(0), + wins_teams_normal_latest: z.number().default(0), + wins_guess_the_build_latest: z.number().default(0), + wins_solo_pro_latest: z.number().default(0), + wins_speed_builders_latest: z.number().default(0) })