Updated murder mystery stats
This commit is contained in:
@@ -5,6 +5,7 @@ import { formatNumber } from "@/lib/formatters"
|
||||
import { NonNullStats } from "@/lib/schema/player"
|
||||
import CollapsedStats from "../../_components/CollapsedStats"
|
||||
import MurderMysteryGeneralStats from "./stats"
|
||||
import MurderMysteryStatTable from "./table"
|
||||
|
||||
export default function MurderMysteryStats({ stats }: { stats: NonNullStats["MurderMystery"] }) {
|
||||
if (!stats) return null
|
||||
@@ -33,6 +34,9 @@ export default function MurderMysteryStats({ stats }: { stats: NonNullStats["Mur
|
||||
<AccordionContent>
|
||||
<Separator className="my-4" />
|
||||
<MurderMysteryGeneralStats statsChecked={stats} />
|
||||
<Separator className="my-4" />
|
||||
<MurderMysteryStatTable stats={stats} />
|
||||
<Separator className="my-4" />
|
||||
</AccordionContent>
|
||||
</CardContent>
|
||||
</Card>
|
||||
|
||||
69
src/app/(stats)/player/[ign]/_stats/murder-mystery/table.tsx
Normal file
69
src/app/(stats)/player/[ign]/_stats/murder-mystery/table.tsx
Normal file
@@ -0,0 +1,69 @@
|
||||
import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table"
|
||||
import { formatNumber } from "@/lib/formatters"
|
||||
import { getBestMurderMysteryMode, getModeTitle, getMurderMysteryModeStats } from "@/lib/hypixel/murder-mystery/general"
|
||||
import { NonNullStats } from "@/lib/schema/player"
|
||||
import { cn } from "@/lib/utils"
|
||||
|
||||
export default function MurderMysteryStatTable({ stats }: { stats: NonNullStats["MurderMystery"] }) {
|
||||
return (
|
||||
<Table>
|
||||
<MurderMysteryTableHeader />
|
||||
<TableBody>
|
||||
<MurderMysteryStat modeId="MURDER_CLASSIC" stats={stats} />
|
||||
<MurderMysteryStat modeId="MURDER_ASSASSINS" stats={stats} />
|
||||
<MurderMysteryStat modeId="MURDER_DOUBLE_UP" stats={stats} />
|
||||
<MurderMysteryStat modeId="MURDER_HARDCORE" stats={stats} />
|
||||
<MurderMysteryStat modeId="MURDER_SHOWDOWN" stats={stats} />
|
||||
<MurderMysteryStat modeId="all_modes" stats={stats} />
|
||||
</TableBody>
|
||||
</Table>
|
||||
)
|
||||
}
|
||||
|
||||
function MurderMysteryTableHeader() {
|
||||
const headerElements = [
|
||||
"Mode",
|
||||
"Kills",
|
||||
"Bow Kills",
|
||||
"Knife Kills",
|
||||
"Thrown Knife Kills",
|
||||
"Wins",
|
||||
"Losses",
|
||||
"WL",
|
||||
"Gold Collected"
|
||||
]
|
||||
|
||||
return (
|
||||
<TableHeader>
|
||||
<TableRow>
|
||||
{headerElements.map((v, i) => {
|
||||
return <TableHead key={i} className="font-bold">{v}</TableHead>
|
||||
})}
|
||||
</TableRow>
|
||||
</TableHeader>
|
||||
)
|
||||
}
|
||||
|
||||
function MurderMysteryStat({ modeId, stats }: { modeId: Parameters<typeof getMurderMysteryModeStats>[0], stats: NonNullStats["MurderMystery"] }) {
|
||||
if (!stats) return null
|
||||
|
||||
const title = getModeTitle(modeId)
|
||||
const modeStats = getMurderMysteryModeStats(modeId, stats)
|
||||
const bestMode = getBestMurderMysteryMode(stats) === modeId
|
||||
|
||||
return (
|
||||
<TableRow
|
||||
className={cn(
|
||||
modeId === "all_modes" ? "font-bold" : undefined,
|
||||
bestMode === true ? "font-bold text-mc-light-purple" : undefined
|
||||
)}
|
||||
>
|
||||
<TableCell>{title}</TableCell>
|
||||
{modeStats.map((v, i) => (
|
||||
<TableCell key={i}>
|
||||
{formatNumber(v)}
|
||||
</TableCell>
|
||||
))}
|
||||
</TableRow>
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user