ts-tiled-converter
Version:
Typescript library to convert tiled map to Studio map
251 lines (231 loc) • 5.23 kB
text/typescript
/**
* 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;
};