UNPKG

tiled-kaboom

Version:

This is a map-loader for [kaboom](https://kaboomjs.com/) to load [tiled](https://www.mapeditor.org/) JSON maps.

3 lines (2 loc) 2.75 kB
const r=[...new Array(4052)].reduce((r,e,t)=>{if([92,173,847,888,889,907,909,930,1328,1367,1368,1376,1416,1419,1420,1421,1424,1565,1867,1868,2081,2082,2094,2095,2111,2140,2141,2445,2446,2449,2450,2473,2481,2490,2491,2501,2502,2505,2506,2526,2532,2533,2564,2577,2578,2601,2609,2612,2615,2618,2619,2621,2633,2634,2638,2639,2640,2653,2692,2702,2706,2729,2737,2740,2746,2747,2758,2762,2766,2767,2788,2789,2820,2829,2830,2833,2834,2857,2865,2868,2874,2875,2885,2886,2889,2890,2910,2916,2917,2948,2955,2956,2957,2961,2966,2967,2968,2971,2973,2976,2977,2978,2981,2982,2983,2987,2988,2989].includes(t))return r;if(t<33)return r;const i=[[126,161],[895,900],[1479,1488],[1514,1520],[1524,1536],[1969,1984],[2042,2048],[2142,2207],[2238,2260],[2384,2389],[2482,2486],[2510,2519],[2519,2524],[2555,2561],[2570,2575],[2626,2631],[2641,2649],[2654,2662],[2677,2689],[2768,2784],[2801,2809],[2809,2817],[2893,2902],[2903,2908],[2935,2946]];for(const e of i)if(t>e[0]&&t<e[1])return r;return[...r,String.fromCharCode(t)]},[]);function e(r){if(!r)throw new Error("Map parameter is required.");if("orthogonal"!==r.orientation)throw new Error(`Map is ${r.orientation}. Only orthogonal is currently supported.`);if("right-down"!==r.renderorder)throw new Error(`Map is ${r.renderorder}. Only right-down is currently supported.`)}function t(r){const e=r.length,t=new Array(e/4);for(let i=0;i<e;i+=4)t[i/4]=(r.charCodeAt(i)|r.charCodeAt(i+1)<<8|r.charCodeAt(i+2)<<16|r.charCodeAt(i+3)<<24)>>>0;return t}export default i=>{let o=window.pako;return{verifyTiledMap:e,async loadTiledMap(n,a=""){"string"==typeof n&&(n=await fetch(n).then(r=>r.json())),e(n);const s={sprites:[],levels:[],key:{}};for(const e of n.tilesets){if(0!==e.margin){console.error(`${e.name} uses margins. That is currently unsupported. Skipping.`);continue}if(0!==e.spacing){console.error(`${e.name} uses spacing. That is currently unsupported. Skipping.`);continue}const t=e.imagewidth/e.tilewidth,o=e.imageheight/e.tileheight;e.image&&s.sprites.push(await i.loadSprite(e.name,`${a}${e.image}`,{sliceX:t,sliceY:o}));for(let t=e.firstgid;t<e.firstgid+e.tilecount;t++)s.key[r[t]]=()=>[i.sprite(e.name,{frame:t-1})]}for(const e of n.layers)if("tilelayer"===e.type&&e.visible){const{width:i,height:n}=e;if("base64"===e.encoding)if(e.compression&&""!==e.compression){void 0===o&&(o=await import("pako"));const r=Uint8Array.from(atob(e.data).split("").map(r=>r.charCodeAt(0)));e.data=t(String.fromCharCode(...o.inflate(r)))}else e.data=t(atob(e.data));const a=[...new Array(n)].map(()=>new Array(i+1).fill(" "));for(let t=0;t<i;t++)for(let o=0;o<n;o++){const n=o*i+t;0!==e.data[n]&&(a[o][t]=r[e.data[n]])}s.levels.push(a.map(r=>r.join("")))}return s.mapObj=n,s}}}; //# sourceMappingURL=tiled-kaboom.modern.js.map