| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- import { z } from "zod";
- const sceneCoordSchema = z.number().int().nonnegative();
- export const sceneBuildingEntitySchema = z
- .object({
- type: z.literal("building"),
- buildingId: z.string().min(1),
- x: sceneCoordSchema,
- y: sceneCoordSchema,
- })
- .strict();
- export const sceneNpcEntitySchema = z
- .object({
- type: z.literal("npc"),
- npcId: z.string().min(1),
- x: sceneCoordSchema,
- y: sceneCoordSchema,
- dialogue: z.string().min(1).optional(),
- label: z.string().min(1).optional(),
- })
- .strict();
- export const sceneAnimalEntitySchema = z
- .object({
- type: z.literal("animal"),
- animalId: z.string().min(1),
- x: sceneCoordSchema,
- y: sceneCoordSchema,
- })
- .strict();
- export const sceneEntitySchema = z.discriminatedUnion("type", [
- sceneBuildingEntitySchema,
- sceneNpcEntitySchema,
- sceneAnimalEntitySchema,
- ]);
- export const sceneSchema = z
- .object({
- id: z.string().min(1),
- entities: z.array(sceneEntitySchema),
- })
- .strict();
- export type SceneBuildingEntity = z.infer<typeof sceneBuildingEntitySchema>;
- export type SceneNpcEntity = z.infer<typeof sceneNpcEntitySchema>;
- export type SceneAnimalEntity = z.infer<typeof sceneAnimalEntitySchema>;
- export type SceneEntity = z.infer<typeof sceneEntitySchema>;
- export type SceneDef = z.infer<typeof sceneSchema>;
|