Overhauled classic stats and added quakecraftr
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -19,7 +19,7 @@ export default function ArenaBrawlStats({ stats }: { stats: NonNullStats["ArenaB
|
||||
|
||||
return (
|
||||
<GeneralStats
|
||||
id="classic-arena"
|
||||
id="arenabrawl"
|
||||
title="Arena Brawl"
|
||||
collapsedStats={[
|
||||
{
|
||||
|
||||
@@ -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>
|
||||
)
|
||||
}
|
||||
@@ -12,7 +12,7 @@ export default function PaintballStats({ stats }: { stats: NonNullStats["Paintba
|
||||
|
||||
return (
|
||||
<GeneralStats
|
||||
id="classic-paintball"
|
||||
id="paintball"
|
||||
title="Paintball"
|
||||
collapsedStats={[
|
||||
{
|
||||
|
||||
34
src/app/(stats)/player/[ign]/_stats/classic/quakecraft.tsx
Normal file
34
src/app/(stats)/player/[ign]/_stats/classic/quakecraft.tsx
Normal 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>
|
||||
)
|
||||
}
|
||||
@@ -13,7 +13,7 @@ export default function VampireZStats({ stats }: { stats: NonNullStats["VampireZ
|
||||
|
||||
return (
|
||||
<GeneralStats
|
||||
id="classic-vampirez"
|
||||
id="vampirez"
|
||||
title="VampireZ"
|
||||
collapsedStats={[
|
||||
{
|
||||
|
||||
@@ -13,7 +13,7 @@ export default function WallsStats({ stats }: { stats: NonNullStats["Walls"] })
|
||||
|
||||
return (
|
||||
<GeneralStats
|
||||
id="classic-walls"
|
||||
id="walls"
|
||||
title="Walls"
|
||||
collapsedStats={[
|
||||
{
|
||||
|
||||
@@ -3,3 +3,7 @@ export const ARENABRAWLMODES = [
|
||||
{ id: "2v2", name: "2v2" },
|
||||
{ id: "4v4", name: "4v4" }
|
||||
] as const
|
||||
export const QUAKECRAFTMODES = [
|
||||
{ id: "", name: "Solo" },
|
||||
{ id: "teams", name: "Teams" }
|
||||
] as const
|
||||
|
||||
@@ -3,7 +3,7 @@ import { arcadeStatsSchema } from "./stats/arcade"
|
||||
import { bedwarsStatsSchema } from "./stats/bedwars"
|
||||
import { blitzStatsSchema } from "./stats/blitz"
|
||||
import { buildBattleStatsSchema } from "./stats/build-battle"
|
||||
import { arenaBrawlStatsSchema, paintBallStatsSchema, vampireZStatsSchema, wallsStatsSchema } from "./stats/classic"
|
||||
import { arenaBrawlStatsSchema, paintBallStatsSchema, quakecraftStatsSchema, vampireZStatsSchema, wallsStatsSchema } from "./stats/classic"
|
||||
import { copsAndCrimsStatsSchema } from "./stats/copsandcrims"
|
||||
import { duelsStatsSchema } from "./stats/duels"
|
||||
import { megawallsStats } from "./stats/megawalls"
|
||||
@@ -49,8 +49,9 @@ export const playerSchema = z.looseObject({
|
||||
Arena: arenaBrawlStatsSchema.optional(),
|
||||
Paintball: paintBallStatsSchema.optional(),
|
||||
Walls: wallsStatsSchema.optional(),
|
||||
VampireZ: vampireZStatsSchema.optional()
|
||||
}).transform(({ Walls3, MCGO, HungerGames, SuperSmash, Battleground, Arena, ...rest }) => {
|
||||
VampireZ: vampireZStatsSchema.optional(),
|
||||
Quake: quakecraftStatsSchema.optional()
|
||||
}).transform(({ Walls3, MCGO, HungerGames, SuperSmash, Battleground, Arena, Quake, ...rest }) => {
|
||||
return {
|
||||
MegaWalls: Walls3,
|
||||
CopsAndCrims: MCGO,
|
||||
@@ -58,6 +59,7 @@ export const playerSchema = z.looseObject({
|
||||
SmashHeros: SuperSmash,
|
||||
Warlords: Battleground,
|
||||
ArenaBrawl: Arena,
|
||||
Quakecraft: Quake,
|
||||
...rest
|
||||
}
|
||||
}).optional(),
|
||||
|
||||
@@ -48,3 +48,18 @@ export const vampireZStatsSchema = z.object({
|
||||
human_wins: z.number().default(0),
|
||||
zombie_kills: z.number().default(0)
|
||||
})
|
||||
|
||||
export const quakecraftStatsSchema = z.object({
|
||||
kills: z.number().default(0),
|
||||
deaths: z.number().default(0),
|
||||
wins: z.number().default(0),
|
||||
headshots: z.number().default(0),
|
||||
kills_since_update_feb_2017: z.number().default(0),
|
||||
shots_fired: z.number().default(0),
|
||||
kills_teams: z.number().default(0),
|
||||
deaths_teams: z.number().default(0),
|
||||
wins_teams: z.number().default(0),
|
||||
headshots_teams: z.number().default(0),
|
||||
kills_since_update_feb_2017_teams: z.number().default(0),
|
||||
shots_fired_teams: z.number().default(0)
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user