MCPcopy Create free account
hub / github.com/melonjs/melonJS / normalizeTMX

Function normalizeTMX

packages/melonjs/src/level/tiled/TMXUtils.js:261–418  ·  view source on GitHub ↗

* Normalizer callback for xmlToObject — converts TMX XML into Tiled JSON format. * @ignore

(obj, item, parse)

Source from the content-addressed store, hash-verified

259 * @ignore
260 */
261function normalizeTMX(obj, item, parse) {
262 const nodeName = item.nodeName;
263
264 switch (nodeName) {
265 case "data": {
266 const data = parse(item);
267 const encoding = data.encoding || "xml";
268 const compression = data.compression;
269
270 // infinite maps: decode each chunk
271 if (data.chunks !== undefined) {
272 const srcChunks = data.chunks;
273 const chunks = obj.chunks || (obj.chunks = []);
274 for (let i = 0, len = srcChunks.length; i < len; i++) {
275 const c = srcChunks[i];
276 chunks.push({
277 x: +c.x,
278 y: +c.y,
279 width: +c.width,
280 height: +c.height,
281 data: decode(c.text, encoding, compression),
282 });
283 }
284 obj.encoding = "none";
285 }
286
287 // finite maps (guard: data.text can exist alongside chunks)
288 if (data.text !== undefined && obj.chunks === undefined) {
289 obj.data = decode(data.text, encoding, compression);
290 obj.encoding = "none";
291 }
292 break;
293 }
294
295 case "chunk": {
296 const chunks = obj.chunks || (obj.chunks = []);
297 chunks.push(parse(item));
298 break;
299 }
300
301 case "imagelayer":
302 case "layer":
303 case "objectgroup":
304 case "group": {
305 const layer = parse(item);
306 layer.type = nodeName === "layer" ? "tilelayer" : nodeName;
307 if (layer.image) {
308 // flattenImage equivalent for image layers
309 if (layer.image.source) {
310 layer.image = layer.image.source;
311 } else if (layer.image.data) {
312 const format = layer.image.format || "png";
313 const base64 = layer.image.data.text || layer.image.data;
314 layer.image = cacheEmbeddedImage(
315 base64,
316 format,
317 layer.image.width ? +layer.image.width : undefined,
318 layer.image.height ? +layer.image.height : undefined,

Callers

nothing calls this directly

Calls 9

decodeFunction · 0.90
xmlToObjectFunction · 0.90
parseFunction · 0.85
cacheEmbeddedImageFunction · 0.85
flattenImageFunction · 0.85
coerceTMXValueFunction · 0.85
sliceMethod · 0.80
splitMethod · 0.65
pushMethod · 0.45

Tested by

no test coverage detected