ts-tiled-converter
Version:
Typescript library to convert tiled map to Studio map
43 lines • 2.21 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.mapToTileLayersWithMetaData = void 0;
var layerToTiles_1 = require("./layerToTiles");
var splitSpecialAndRegularLayers_1 = require("./splitSpecialAndRegularLayers");
var objects_1 = require("../tiledXML/objects");
var util_1 = require("../util");
var cache;
var mapToTileLayersWithMetaData = function (_a) {
var map = _a.map;
try {
cache = new Map();
return filterAndFlatten(map, 0).map(mapLayerToTileLayers);
}
catch (error) {
return (0, util_1.toError)(error);
}
};
exports.mapToTileLayersWithMetaData = mapToTileLayersWithMetaData;
var isVisibleLayer = function (entity) {
return 'layer' in entity && ((0, objects_1.getXMLProperties)(entity).visible != 0 || (0, objects_1.getXMLProperties)(entity).name in splitSpecialAndRegularLayers_1.SPECIAL_LAYER_TILESETS);
};
var isVisibleGroup = function (entity) {
return 'group' in entity && ((0, objects_1.getXMLProperties)(entity).visible != 0 || (0, objects_1.getXMLProperties)(entity).name.startsWith('system'));
};
var filterLayerOrGroup = function (entity) { return isVisibleLayer(entity) || isVisibleGroup(entity); };
var filterAndFlatten = function (e, groupZIndex) { return e.filter(filterLayerOrGroup).flatMap(mapGroupOrLayerToLayers(groupZIndex)); };
var flattenGroup = function (group, groupZIndex) {
var name = (0, objects_1.getXMLProperties)(group).name;
return filterAndFlatten(group.group, name.startsWith('z=') ? Number(name.split('=')[1]) - 1 : groupZIndex);
};
var mapGroupOrLayerToLayers = function (groupZIndex) { return function (entity) {
if ('group' in entity)
return flattenGroup(entity, groupZIndex);
var name = (0, objects_1.getXMLProperties)(entity).name;
var regMatch = name.match(/([1-6])$/);
return { z: regMatch ? Number(regMatch[0]) - 1 : groupZIndex, name: name, entity: entity };
}; };
var mapLayerToTileLayers = function (_a) {
var z = _a.z, name = _a.name, entity = _a.entity;
return ({ z: z, name: name, layer: (0, util_1.throwIfError)((0, layerToTiles_1.layerToTiles)(entity, cache)) });
};
//# sourceMappingURL=mapToTileLayersWithMetaData.js.map