UNPKG

ts-tiled-converter

Version:

Typescript library to convert tiled map to Studio map

251 lines (231 loc) 5.23 kB
/** * Constant holding the list of attributes that should be parsed as number */ export const XML_NUMERIC_ATTRIBUTES = [ 'compressionlevel', 'width', 'height', 'x', 'y', 'tilewidth', 'tileheight', 'infinite', 'nextlayerid', 'nextobjectid', 'firstgid', 'id', 'offsetx', 'offsety', 'parallaxx', 'parallaxy', 'hexsidelength', 'tilecount', 'columns', 'probability', 'tileid', 'duration', 'tile', 'rotate', 'vflip', 'hflip', 'preferuntransformed', ]; /** * Constant holding the translation from XML attribute to JSON attribute name */ export const XML_TO_JSON_ATTRIBUTES: Record<string, string> = { tilewidth: 'tileWidth', tileheight: 'tileHeight', tiledversion: 'tiledVersion', renderorder: 'renderOrder', compressionlevel: 'compressionLevel', hexsidelength: 'hexSideLength', staggeraxis: 'staggerAxis', staggerindex: 'staggerIndex', parallaxoriginx: 'parallaxOriginX', parallaxoriginy: 'parallaxOriginY', nextlayerid: 'nextLayerId', nextobjectid: 'nextObjectId', propertytype: 'propertyType', firstgid: 'firstGlobalId', tintcolor: 'tintColor', offsetx: 'offsetX', offsety: 'offsetY', parallaxx: 'parallaxX', parallaxy: 'parallaxY', draworder: 'drawOrder', repeatx: 'repeatX', repeaty: 'repeatY', tilecount: 'tileCount', tileid: 'tileId', wangid: 'wangId', vflip: 'vFlip', hflip: 'hFlip', preferuntransformed: 'preferUntransformed', }; export type TiledXMLGroupProperty = { id: number; name: string; class: string; offsetX?: number; offsetY?: number; parallaxX?: number; parallaxY?: number; opacity?: number; visible?: 0 | 1; tintColor?: string; }; export type TiledXMLImageProperty = { format: 'png' | 'gif' | 'jpg' | 'bmp'; source: string; trans?: string; width?: number; height?: number; }; export type TiledXMLImageLayerProperty = { id: number; name: string; class: string; offsetX: number; offsetY: number; parallaxX: number; parallaxY: number; opacity?: number; visible?: 0 | 1; tintColor?: string; repeatX?: boolean; repeatY?: boolean; }; export type TiledXMLObjectProperty = { id: number; name: string; type: string; x: number; y: number; width: number; height: number; rotation?: number; gid?: number; visible: 0 | 1; template?: string; }; export type TiledXMLObjectGroupProperty = { id: number; name: string; class: string; color?: string; x?: number; y?: number; width?: number; opacity?: number; visible?: 0 | 1; tintColor?: string; offsetX?: number; offsetY?: number; parallaxX?: number; parallaxY?: number; drawOrder: 'index' | 'topdown'; }; export type TiledXMLDataProperty = { encoding?: 'base64' | 'csv'; compression?: 'gzip' | 'zlib' | 'zstd'; }; export type TiledXMLLayerProperty = { id: number; name: string; class: string; x?: number; y?: number; width: number; height: number; opacity?: number; visible?: 0 | 1; tintColor?: string; offsetX?: number; offsetY?: number; parallaxX?: number; parallaxY?: number; }; export type TiledXMLPropertyProperty = { name: string; type: 'string' | 'int' | 'float' | 'bool' | 'color' | 'file' | 'object' | 'class'; propertyType?: string; value: string; }; export type TiledXMLMapTilesetProperty = { firstGlobalId: number; source: string; }; export type TiledXMLMapProperty = { version: string; tiledVersion: string; orientation: 'orthogonal' | 'isometric' | 'staggered' | 'hexagonal'; renderOrder: 'right-down' | 'right-up' | 'left-down' | 'left-up'; compressionLevel: number; width: number; height: number; tileWidth: number; tileHeight: number; hexSideLength?: number; staggerAxis?: 'x' | 'y'; staggerIndex?: 'even' | 'odd'; parallaxOriginX?: number; parallaxOriginY?: number; nextLayerId: number; nextObjectId: number; infinite: 0 | 1; }; export type TiledXMLTilesetProperty = { version: string; tiledVersion: string; name: string; tileWidth: number; tileHeight: number; tileCount: number; columns: number; }; export type TiledXMLTileProperty = { id: number; name: string; class: string; probability: number; x: number; y: number; width: number; height: number; }; export type TiledXMLFrameProperty = { tileId: number; duration: number; }; export type TiledXMLTileOffsetProperty = { x: number; y: number; }; export type TiledXMLGridProperty = { orientation: 'orthogonal' | 'isometric'; width: number; height: number; }; export type TiledXMLWangSetProperty = { name: string; class: string; tile: number; }; export type TiledXMLWangColorProperty = { name: string; class: string; color: string; tile: number; probability: number; }; export type TiledXMLWangTileProperty = { tileId: number; wangId: string; }; export type TiledXMLTransformationsProperty = { hFlip: number; vFlip: number; rotate: number; preferUntransformed: number; };