This commit is contained in:
2023-05-20 14:11:35 +02:00
parent 7f6b7f4695
commit 7576850ae0
109 changed files with 10720 additions and 0 deletions

View File

@@ -0,0 +1,40 @@
import { z } from "zod";
import { Vec2 } from "./Values";
import { Paint, TextPaint } from "./Paint";
const EntityTypeOptions = ["Text", "Ellipse", "Box"] as const;
export const EntityType = z.enum(EntityTypeOptions);
export const GeometryEntity = z.object({
paint: Paint,
});
export const BoxEntity = GeometryEntity.extend({
type: z.literal(EntityType.Enum.Box),
size: Vec2,
position: Vec2,
origin: Vec2,
});
export const EllipseEntity = GeometryEntity.extend({
type: z.literal(EntityType.Enum.Ellipse),
radius: Vec2,
position: Vec2,
origin: Vec2,
});
export const TextEntity = z.object({
type: z.literal(EntityType.Enum.Text),
paint: TextPaint,
origin: Vec2,
text: z.string(),
});
export const Entity = z.discriminatedUnion("type", [
BoxEntity,
EllipseEntity,
TextEntity,
]);
export const Entities = z.array(Entity);