Adde speed uhc mastery stats

This commit is contained in:
2025-09-17 20:22:40 +02:00
parent 9c3e0edd90
commit 0eb410dff7
4 changed files with 161 additions and 37 deletions

View File

@@ -6,7 +6,7 @@ import { NonNullStats } from "@/lib/schema/player"
import GeneralStats from "../GeneralStats"
import SpeedUHCProgress from "./progress"
import SpeedUHCGeneralStats from "./stats"
import { SpeedUHCModeStatsTable } from "./table"
import { SpeedUHCMasteryStatsTable, SpeedUHCModeStatsTable } from "./table"
export default function SpeedUHCStats({ stats, uhcCoins }: { stats: NonNullStats["SpeedUHC"], uhcCoins: number | undefined }) {
if (!stats) return null
@@ -45,6 +45,8 @@ export default function SpeedUHCStats({ stats, uhcCoins }: { stats: NonNullStats
<Separator className="my-4" />
<SpeedUHCModeStatsTable stats={stats} />
<Separator className="my-4" />
<SpeedUHCMasteryStatsTable stats={stats} />
<Separator className="my-4" />
</GeneralStats>
)
}

View File

@@ -1,9 +1,74 @@
import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table"
import { formatNumber } from "@/lib/formatters"
import { getSpeedUHCBestMode, getSpeedUHCModeName, getSpeedUHCModeStats } from "@/lib/hypixel/speeduhc/general"
import {
getSpeedUHCBestMastery,
getSpeedUHCBestMode,
getSpeedUHCMasteryName,
getSpeedUHCMasteryStats,
getSpeedUHCModeName,
getSpeedUHCModeStats
} from "@/lib/hypixel/speeduhc/general"
import { NonNullStats } from "@/lib/schema/player"
import { cn } from "@/lib/utils"
export function SpeedUHCMasteryStatsTable({ stats }: { stats: NonNullable<NonNullStats["SpeedUHC"]> }) {
return (
<Table>
<SpeedUHCMasteryStatsTableHeader />
<TableBody>
<SpeedUHCMasteryStatRow id="mastery_wild_specialist" stats={stats} />
<SpeedUHCMasteryStatRow id="mastery_sniper" stats={stats} />
<SpeedUHCMasteryStatRow id="mastery_berserk" stats={stats} />
<SpeedUHCMasteryStatRow id="mastery_fortune" stats={stats} />
<SpeedUHCMasteryStatRow id="mastery_invigorate" stats={stats} />
<SpeedUHCMasteryStatRow id="mastery_huntsman" stats={stats} />
<SpeedUHCMasteryStatRow id="mastery_vampirism" stats={stats} />
<SpeedUHCMasteryStatRow id="mastery_guardian" stats={stats} />
<SpeedUHCMasteryStatRow id="all" stats={stats} />
</TableBody>
</Table>
)
}
function SpeedUHCMasteryStatRow(
{ id, stats }: { id: Parameters<typeof getSpeedUHCMasteryStats>[0], stats: NonNullable<NonNullStats["SpeedUHC"]> }
) {
const modeStats = getSpeedUHCMasteryStats(id, stats)
const modeName = getSpeedUHCMasteryName(id)
const isBest = getSpeedUHCBestMastery(stats) === id
return (
<TableRow className={cn(isBest && "text-mc-light-purple")}>
<TableCell>{modeName}</TableCell>
{modeStats.map((v, i) => {
return <TableCell key={i}>{formatNumber(v)}</TableCell>
})}
</TableRow>
)
}
function SpeedUHCMasteryStatsTableHeader() {
const headerElements = [
"Mastery",
"Kills",
"Deaths",
"KD",
"Wins",
"Losses",
"WL"
]
return (
<TableHeader>
<TableRow>
{headerElements.map((v, i) => {
return <TableHead key={i} className="font-bold">{v}</TableHead>
})}
</TableRow>
</TableHeader>
)
}
export function SpeedUHCModeStatsTable({ stats }: { stats: NonNullable<NonNullStats["SpeedUHC"]> }) {
return (
<Table>