@bscotch/yy
Version:
Stringify, parse, read, and write GameMaker yy and yyp files.
268 lines • 10.5 kB
JavaScript
// Generated by ts-to-zod
import { z } from 'zod';
import { yyBaseSchema } from './YyBase.js';
import { FixedNumber, fixed0, fixed1, 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(fixed1),
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(fixed0),
scaleX: fixedNumber().default(fixed1),
scaleY: fixedNumber().default(fixed1),
tags: z.array(z.string()).optional(),
x: fixedNumber().default(fixed0),
y: fixedNumber().default(fixed0),
});
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.looseObject({
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),
});
const yyRoomTileLayerSchema = z.looseObject({
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.looseObject({
SerialiseHeight: z.number().default(32),
SerialiseWidth: z.number().default(32),
TileCompressedData: z.unknown().optional(),
TileDataFormat: z.number().default(1),
}),
tilesetId: z.looseObject({ name: z.string(), path: z.string() }).nullable(),
userdefinedDepth: z.boolean().default(false),
visible: z.boolean().default(true),
x: z.number().default(0),
y: z.number().default(0),
});
const yyRoomEffectLayer = z.looseObject({
resourceType: z.literal('GMREffectLayer'),
});
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.looseObject({
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),
});
const yyRoomBackgroundLayerSchema = yyRoomLayerBaseSchema.extend({
animationFPS: fixedNumber().default(new FixedNumber(15)),
animationSpeedType: z.number().default(0),
colour: z.number().default(4278190080),
depth: z.number().default(100),
hspeed: fixedNumber().default(fixed0),
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
.looseObject({
name: z.string(),
path: z.string(),
})
.nullable()
.default(null),
stretch: z.boolean().default(false),
tags: z.array(z.string()).optional(),
userdefinedAnimFPS: z.boolean().default(false),
vspeed: fixedNumber().default(fixed0),
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({
inheritRoomSettings: false,
Width: 5000,
Height: 5000,
persistent: false,
}),
viewSettings: unstable({
inheritViewSettings: z.boolean().default(false),
enableViews: z.boolean().default(true),
clearViewBackground: z.boolean().default(true),
clearDisplayBuffer: z.boolean().default(true),
}).default({
inheritViewSettings: false,
enableViews: true,
clearViewBackground: true,
clearDisplayBuffer: true,
}),
physicsSettings: unstable({
inheritPhysicsSettings: z.boolean().default(false),
PhysicsWorld: z.boolean().default(false),
PhysicsWorldGravityX: fixedNumber().default(fixed0),
PhysicsWorldGravityY: fixedNumber().default(new FixedNumber(10)),
PhysicsWorldPixToMetres: fixedNumber().default(fixed0),
}).default({
inheritPhysicsSettings: false,
PhysicsWorld: false,
PhysicsWorldGravityX: fixed0,
PhysicsWorldGravityY: new FixedNumber(10),
PhysicsWorldPixToMetres: fixed0,
}),
isDnd: z.boolean().default(false),
volume: fixedNumber().default(new FixedNumber(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