Added arcade stat card

This commit is contained in:
2025-09-14 13:59:58 +02:00
parent 64a39eec6a
commit 6c19b059c4
6 changed files with 109 additions and 1 deletions

View File

@@ -0,0 +1,14 @@
import { WINS } from "@/data/hypixel/arcade"
import { NonNullStats } from "@/lib/schema/player"
export function getArcadeTotalWins(stats: NonNullable<NonNullStats["Arcade"]>) {
let wins = 0
for (const win of WINS) {
wins = wins + stats[win]
}
if (stats.dropper) wins = wins + stats.dropper.wins
if (stats.pixel_party) wins = wins + stats.pixel_party.wins
return wins
}

View File

@@ -1,5 +1,6 @@
import z from "zod"
import {
arcadeStatsSchema,
bedwarsStatsSchema,
blitzStatsSchema,
buildBattleStatsSchema,
@@ -38,7 +39,8 @@ export const playerSchema = z.looseObject({
Walls3: megawallsStats.optional(),
MCGO: copsAndCrimsStatsSchema.optional(),
WoolGames: woolGamesStatsSchema.optional(),
HungerGames: blitzStatsSchema.optional()
HungerGames: blitzStatsSchema.optional(),
Arcade: arcadeStatsSchema.optional()
}).transform(({ Walls3, MCGO, HungerGames, ...rest }) => {
return {
MegaWalls: Walls3,

View File

@@ -878,3 +878,46 @@ export const blitzStatsSchema = z.object({
...blitzKitPlayedStats().kits,
...blitzKitPlayedStats().prestiges
})
function arcadeModeWins() {
const ids = [
"wins_dayone",
"wins_oneinthequiver",
"wins_dragonwars2",
"wins_easter_simulator",
"wins_ender",
"wins_farm_hunt",
"wins_soccer",
"sw_game_wins",
"wins_grinch_simulator_v2",
"wins_halloween_simulator",
"seeker_wins_hide_and_seek",
"hider_wins_hide_and_seek",
"wins_hole_in_the_wall",
"wins_simon_says",
"wins_party",
"wins_party_2",
"wins_party_3",
"wins_draw_their_thing",
"wins_scuba_simulator",
"wins_throw_out",
"wins_mini_walls",
"wins_zombies"
] as const
const entries = new Map<string, z.ZodDefault<z.ZodNumber>>()
for (const id of ids) {
entries.set(`${id}`, z.number().default(0))
}
return Object.fromEntries(entries) as Record<`${typeof ids[number]}`, z.ZodDefault<z.ZodNumber>>
}
export const arcadeStatsSchema = z.object({
pixel_party: z.object({
wins: z.number().default(0)
}).optional(),
dropper: z.object({
wins: z.number().default(0)
}).optional(),
...arcadeModeWins()
})