import catalog from "../../shared/arena-stages.json"; import type { ArenaStageManifest } from "./arenaTypes"; function normalizeStage(stage: Omit): ArenaStageManifest { return { ...stage, assets: [ { id: "visual", url: `${stage.assetBaseUrl}/visual.glb` }, { id: "collision", url: `${stage.assetBaseUrl}/collision.glb` }, { id: "navigation", url: `${stage.assetBaseUrl}/navigation.glb` }, ], }; } export const ARENA_STAGES = Object.freeze( catalog.stages.map((stage) => normalizeStage(stage as unknown as Omit)), ); export const VALIDATED_ARENA_STAGES = Object.freeze( ARENA_STAGES.filter((stage) => Object.values(stage.validation).slice(1, 6).every(Boolean)), ); export function arenaStageById(stageId: string) { return ARENA_STAGES.find((stage) => stage.id === stageId) ?? null; }