UNPKG

ts-tiled-converter

Version:

Typescript library to convert tiled map to Studio map

57 lines 2.13 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.layerToTiles = void 0; var zlib_1 = require("zlib"); var objects_1 = require("../tiledXML/objects"); var layerToTiles = function (layer, cache) { cache.set(0, null); var data = decodeLayer(layer); if (data instanceof Error) return data; return data.map(function (v) { var tileData = cache.get(v); if (tileData !== undefined) return tileData; var newTileData = { globalId: v & 0x0fffffff, transformId: (v >> 28) & 0xf, }; cache.set(v, newTileData); return newTileData; }); }; exports.layerToTiles = layerToTiles; var decodeLayer = function (_a) { var layer = _a.layer; var data = layer.find(function (v) { return 'data' in v; }); if (!data) return new Error('Failed to find data in layer'); if (!data.data[0] || !('rawData' in data.data[0])) return new Error('Failed to find content in data layer'); var _b = (0, objects_1.getXMLProperties)(data), encoding = _b.encoding, compression = _b.compression; if (encoding === 'csv') return decodeCSVLayer(data); if (encoding !== 'base64') return new Error('Unsupported layer data encoding'); if (compression === 'gzip' || compression === 'zlib') return decodeCompressedLayer(data); if (compression !== 'zstd') return decodeBuffer(Buffer.from(data.data[0].rawData, 'base64')); return new Error('Unsupported layer data compression'); }; var decodeCSVLayer = function (_a) { var data = _a.data; return data[0].rawData.split(',').map(Number); }; var decodeCompressedLayer = function (_a) { var data = _a.data; return decodeBuffer((0, zlib_1.unzipSync)(Buffer.from(data[0].rawData, 'base64'))); }; var decodeBuffer = function (buffer) { var dwordLength = Math.floor(buffer.length / 4); var returnArray = Array(dwordLength); for (var i = 0; i < dwordLength; i++) returnArray[i] = buffer.readUint32LE(i * 4); return returnArray; }; //# sourceMappingURL=layerToTiles.js.map