Files
healer-man/src/game/arenaStages.ts
T
2026-09-05 20:42:38 -04:00

26 lines
887 B
TypeScript

import catalog from "../../shared/arena-stages.json";
import type { ArenaStageManifest } from "./arenaTypes";
function normalizeStage(stage: Omit<ArenaStageManifest, "assets">): 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<ArenaStageManifest, "assets">)),
);
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;
}