Overhauled classic stats and added quakecraftr

This commit is contained in:
2025-09-22 13:01:32 +02:00
parent c04d8aae18
commit acf5f3b36d
10 changed files with 72 additions and 64 deletions

View File

@@ -17,7 +17,11 @@ import ArcadeStats from "./_stats/arcade/arcade"
import BedwarsStats from "./_stats/bedwars/bedwars"
import BlitzStats from "./_stats/blitz/blitz"
import BuildBattleStats from "./_stats/build-battle/build-battle"
import ClassicStats from "./_stats/classic/classic"
import ArenaBrawlStats from "./_stats/classic/arenabrawl"
import PaintballStats from "./_stats/classic/paintball"
import QuakecraftStats from "./_stats/classic/quakecraft"
import VampireZStats from "./_stats/classic/vampirez"
import WallsStats from "./_stats/classic/walls"
import CopsAndCrimsStats from "./_stats/copsandcrims/copsandcrims"
import DuelsStats from "./_stats/duels/duels"
import MegaWallsStats from "./_stats/megawalls/megawalls"
@@ -101,16 +105,11 @@ export function PlayerStats(
"speeduhc": <SpeedUHCStats stats={stats.SpeedUHC} uhcCoins={stats.UHC?.coins} />,
"smashheros": <SmashHerosStats stats={stats.SmashHeros} />,
"warlords": <WarlordsStats stats={stats.Warlords} />,
"classic": (
<ClassicStats
stats={{
arena: stats.ArenaBrawl,
paintball: stats.Paintball,
walls: stats.Walls,
vampirez: stats.VampireZ
}}
/>
)
"arenabrawl": <ArenaBrawlStats stats={stats.ArenaBrawl} />,
"paintball": <PaintballStats stats={stats.Paintball} />,
"walls": <WallsStats stats={stats.Walls} />,
"vampirez": <VampireZStats stats={stats.VampireZ} />,
"quakecraft": <QuakecraftStats stats={stats.Quakecraft} />
} as const
const defaultOrder = Object.keys(statsComponents)

View File

@@ -19,7 +19,7 @@ export default function ArenaBrawlStats({ stats }: { stats: NonNullStats["ArenaB
return (
<GeneralStats
id="classic-arena"
id="arenabrawl"
title="Arena Brawl"
collapsedStats={[
{

View File

@@ -1,46 +0,0 @@
import { AccordionContent, AccordionItem, AccordionTrigger } from "@/components/ui/accordion"
import { Card, CardContent } from "@/components/ui/card"
import { NonNullStats } from "@/lib/schema/player"
import { cn } from "@/lib/utils"
import CollapsedStats from "../../_components/CollapsedStats"
import ArenaBrawlStats from "./arenabrawl"
import PaintballStats from "./paintball"
import VampireZStats from "./vampirez"
import WallsStats from "./walls"
export default function ClassicStats(
{ stats }: {
stats: {
arena: NonNullStats["ArenaBrawl"]
paintball: NonNullStats["Paintball"]
walls: NonNullStats["Walls"]
vampirez: NonNullStats["VampireZ"]
}
}
) {
return (
<AccordionItem value="classic">
<Card className="py-0">
<CardContent>
<AccordionTrigger className={cn("items-center py-2 hover:no-underline hover:cursor-pointer overflow-y-auto")}>
<h1 className="text-xl font-bold">Classic</h1>
<div className="flex gap-4">
<CollapsedStats
stats={[{
title: <p>Modes</p>,
stat: <p className="text-muted-foreground">Arena Brawl | Paintball | Quakecraft | TKR | VampireZ | Walls</p>
}]}
/>
</div>
</AccordionTrigger>
</CardContent>
</Card>
<AccordionContent className="pt-4 space-y-4 mx-auto w-[95%]">
<ArenaBrawlStats stats={stats.arena} />
<PaintballStats stats={stats.paintball} />
<WallsStats stats={stats.walls} />
<VampireZStats stats={stats.vampirez} />
</AccordionContent>
</AccordionItem>
)
}

View File

@@ -12,7 +12,7 @@ export default function PaintballStats({ stats }: { stats: NonNullStats["Paintba
return (
<GeneralStats
id="classic-paintball"
id="paintball"
title="Paintball"
collapsedStats={[
{

View File

@@ -0,0 +1,34 @@
import { Separator } from "@/components/ui/separator"
import { formatNumber } from "@/lib/formatters"
import { devide } from "@/lib/hypixel/general"
import { NonNullStats } from "@/lib/schema/player"
import { EmptyStats, GeneralStats } from "../stats-components"
export default function QuakecraftStats({ stats }: { stats: NonNullStats["Quakecraft"] }) {
if (!stats) return <EmptyStats title="Quakecraft" />
const kd = formatNumber(devide(stats.kills + stats.kills_teams, stats.deaths + stats.deaths_teams))
return (
<GeneralStats
id="quakecraft"
title="Quakecraft"
collapsedStats={[
{
title: <p>Kills</p>,
stat: <p className="text-muted-foreground">{formatNumber(stats.kills + stats.kills_teams)}</p>
},
{
title: <p>KD</p>,
stat: <p className="text-muted-foreground">{kd}</p>
},
{
title: <p>Wins</p>,
stat: <p className="text-muted-foreground">{formatNumber(stats.wins + stats.wins_teams)}</p>
}
]}
>
<Separator className="my-4" />
</GeneralStats>
)
}

View File

@@ -13,7 +13,7 @@ export default function VampireZStats({ stats }: { stats: NonNullStats["VampireZ
return (
<GeneralStats
id="classic-vampirez"
id="vampirez"
title="VampireZ"
collapsedStats={[
{

View File

@@ -13,7 +13,7 @@ export default function WallsStats({ stats }: { stats: NonNullStats["Walls"] })
return (
<GeneralStats
id="classic-walls"
id="walls"
title="Walls"
collapsedStats={[
{