UNPKG

@bscotch/yy

Version:

Stringify, parse, read, and write GameMaker yy and yyp files.

266 lines 10.1 kB
// Generated by ts-to-zod import { z } from 'zod'; import { yyBaseSchema } from './YyBase.js'; import { fixedNumber, randomString, unstable, yyResourceIdSchemaGenerator, } from './utility.js'; const yyRoomViewSchema = unstable({ inherit: z.boolean().default(false), visible: z.boolean().default(false), xview: z.number().default(0), yview: z.number().default(0), wview: z.number().default(1024), hview: z.number().default(768), xport: z.number().default(0), yport: z.number().default(0), wport: z.number().default(1024), hport: z.number().default(768), hborder: z.number().default(32), vborder: z.number().default(32), hspeed: z.number().default(-1), vspeed: z.number().default(-1), /** The object being followed */ objectId: z.unknown().nullable().default(null), }); export const yyRoomInstanceSchema = unstable({ colour: z.number().default(4294967295), frozen: z.boolean().default(false), hasCreationCode: z.boolean().default(false), ignore: z.boolean().default(false), imageIndex: z.number().default(0), imageSpeed: fixedNumber().default(1), inheritCode: z.boolean().default(false), inheritedItemId: z.unknown().nullable().default(null), inheritItemSettings: z.boolean().default(false), isDnd: z.boolean().default(false), name: z.string().default(() => `inst_${randomString(8)}`), objectId: yyResourceIdSchemaGenerator('objects'), properties: z.array(z.unknown()).default([]), resourceType: z.literal('GMRInstance').default('GMRInstance'), resourceVersion: z.string().default('1.0'), rotation: fixedNumber().default(0), scaleX: fixedNumber().default(1), scaleY: fixedNumber().default(1), tags: z.array(z.string()).optional(), x: fixedNumber().default(0), y: fixedNumber().default(0), }); export const yyRoomLayerBaseSchema = unstable({ effectEnabled: z.boolean().optional().default(true), effectType: z.unknown().optional().default(null), gridX: z.number().default(32), gridY: z.number().default(32), hierarchyFrozen: z.boolean().default(false), inheritLayerDepth: z.boolean().default(false), inheritLayerSettings: z.boolean().default(false), inheritSubLayers: z.boolean().default(true), inheritVisibility: z.boolean().default(true), layers: z.array(z.unknown()).default([]), properties: z.array(z.unknown()).optional().default([]), userdefinedDepth: z.boolean().default(false), visible: z.boolean().default(true), }); const yyRoomPathLayerSchema = z .object({ resourceType: z.literal('GMRPathLayer'), resourceVersion: z.string().default('1.0'), name: z.string(), depth: z.number().default(0), effectEnabled: z.boolean().default(true), effectType: z.unknown().nullable().default(null), gridX: z.number().default(32), gridY: z.number().default(32), hierarchyFrozen: z.boolean().default(false), inheritLayerDepth: z.boolean().default(false), inheritLayerSettings: z.boolean().default(false), inheritSubLayers: z.boolean().default(true), inheritVisibility: z.boolean().default(true), layers: z.array(z.unknown()).nullable().default([]), pathId: z .object({ name: z.string(), path: z.string(), }) .nullable() .default(null), userdefinedDepth: z.boolean().default(false), visible: z.boolean().default(true), }) .passthrough(); const yyRoomTileLayerSchema = z .object({ resourceType: z.literal('GMRTileLayer'), resourceVersion: z.string().default('1.1'), name: z.string().default('Tiles'), depth: z.number().default(0), effectEnabled: z.boolean().default(true), effectType: z.unknown().optional().nullable().default(null), gridX: z.number().default(32), gridY: z.number().default(32), hierarchyFrozen: z.boolean().default(false), inheritLayerDepth: z.boolean().default(false), inheritLayerSettings: z.boolean().default(false), inheritSubLayers: z.boolean().default(true), inheritVisibility: z.boolean().default(true), layers: z.array(z.unknown()).default([]), properties: z.array(z.unknown()).default([]), tiles: z .object({ SerialiseHeight: z.number().default(32), SerialiseWidth: z.number().default(32), TileCompressedData: z.unknown().optional(), TileDataFormat: z.number().default(1), }) .passthrough(), tilesetId: z .object({ name: z.string(), path: z.string() }) .passthrough() .nullable(), userdefinedDepth: z.boolean().default(false), visible: z.boolean().default(true), x: z.number().default(0), y: z.number().default(0), }) .passthrough(); const yyRoomEffectLayer = z .object({ resourceType: z.literal('GMREffectLayer'), }) .passthrough(); export const yyRoomInstanceLayerSchema = yyRoomLayerBaseSchema .extend({ instances: z.array(yyRoomInstanceSchema).default([]), depth: z.number().default(0), resourceVersion: z.string().default('1.0'), /** * @default "Instances" */ name: z.string().default('Instances'), tags: z.array(z.string()).optional(), resourceType: z.literal('GMRInstanceLayer').default('GMRInstanceLayer'), }) .passthrough(); const yyRoomAssetLayerSchema = z .object({ resourceType: z.literal('GMRAssetLayer'), resourceVersion: z.string().default('1.0'), name: z.string(), assets: z.array(z.unknown()).default([]), depth: z.number().default(0), effectEnabled: z.boolean().default(true), effectType: z.unknown().nullable().default(null), gridX: z.number().default(32), gridY: z.number().default(32), hierarchyFrozen: z.boolean().default(false), inheritLayerDepth: z.boolean().default(false), inheritLayerSettings: z.boolean().default(false), inheritSubLayers: z.boolean().default(true), inheritVisibility: z.boolean().default(true), layers: z.array(z.unknown()).default([]), properties: z.array(z.unknown()).default([]), userdefinedDepth: z.boolean().default(true), visible: z.boolean().default(true), }) .passthrough(); const yyRoomBackgroundLayerSchema = yyRoomLayerBaseSchema.extend({ animationFPS: fixedNumber().default(15), animationSpeedType: z.number().default(0), colour: z.number().default(4278190080), depth: z.number().default(100), hspeed: fixedNumber().default(0), htiled: z.boolean().default(false), name: z.string().default('Background'), properties: z.array(z.unknown()).default([]), resourceType: z.literal('GMRBackgroundLayer').default('GMRBackgroundLayer'), resourceVersion: z.string().default('1.0'), spriteId: z .object({ name: z.string(), path: z.string(), }) .passthrough() .nullable() .default(null), stretch: z.boolean().default(false), tags: z.array(z.string()).optional(), userdefinedAnimFPS: z.boolean().default(false), vspeed: fixedNumber().default(0), vtiled: z.boolean().default(false), x: z.number().default(0), y: z.number().default(0), }); const yyRoomLayerLayerSchema = z.object({ resourceType: z.literal('GMRLayer'), resourceVersion: z.string().default('1.0'), name: z.string().default('instances'), depth: z.number().default(0), effectEnabled: z.boolean().default(true), effectType: z.unknown().nullable().default(null), gridX: z.number().default(32), gridY: z.number().default(32), hierarchyFrozen: z.boolean().default(false), inheritLayerDepth: z.boolean().default(false), inheritLayerSettings: z.boolean().default(false), inheritSubLayers: z.boolean().default(true), inheritVisibility: z.boolean().default(true), layers: z.array(z.unknown()).default([]), properties: z.array(z.unknown()).default([]), userdefinedDepth: z.boolean().default(false), visible: z.boolean().default(true), }); const yyRoomInstanceCreationOrderEntrySchema = z.object({ /** * The *instance name*, which can be custom. * Must match one of the YyRoomInstance names. */ name: z.string(), /** The room's path */ path: z.string(), }); const yyRoomLayerSchema = z.discriminatedUnion('resourceType', [ yyRoomInstanceLayerSchema, yyRoomBackgroundLayerSchema, yyRoomTileLayerSchema, yyRoomAssetLayerSchema, yyRoomPathLayerSchema, yyRoomLayerLayerSchema, yyRoomEffectLayer, ]); export const yyRoomSchema = yyBaseSchema.extend({ layers: z.array(yyRoomLayerSchema).default([]), instanceCreationOrder: z .array(yyRoomInstanceCreationOrderEntrySchema) .default([]), roomSettings: unstable({ inheritRoomSettings: z.boolean().default(false), Width: z.number().default(5000), Height: z.number().default(5000), persistent: z.boolean().default(false), }).default({}), viewSettings: unstable({ inheritViewSettings: z.boolean().default(false), enableViews: z.boolean().default(true), clearViewBackground: z.boolean().default(true), clearDisplayBuffer: z.boolean().default(true), }).default({}), physicsSettings: unstable({ inheritPhysicsSettings: z.boolean().default(false), PhysicsWorld: z.boolean().default(false), PhysicsWorldGravityX: fixedNumber().default(0), PhysicsWorldGravityY: fixedNumber().default(10), PhysicsWorldPixToMetres: fixedNumber().default(0), }).default({}), isDnd: z.boolean().default(false), volume: fixedNumber().default(10), parentRoom: z.unknown().nullable().default(null), /** * 8 identical 'views' are created by default. * @default [] */ views: z.array(yyRoomViewSchema).default([]), inheritLayers: z.boolean().default(false), creationCodeFile: z.string().default(''), inheritCode: z.boolean().default(false), inheritCreationOrder: z.boolean().default(false), sequenceId: z.unknown().default(null), resourceType: z.literal('GMRoom').default('GMRoom'), }); //# sourceMappingURL=YyRoom.js.map