UNPKG

@koreez/phaser2-animate

Version:
111 lines (106 loc) 6.63 kB
const dirTree = require("directory-tree"); const fs = require("fs"); const destination = "static/assets/"; tree = dirTree("./raw/animate", { normalizePath: true, extensions: /\.json$/ }); const handleAnimate = animate => { const fileData = fs.readFileSync(animate.path, "ascii"); const animationData = JSON.parse(fileData); const s_n = []; const i_n = []; delete animationData.SYMBOL_DICTIONARY; delete animationData.ANIMATION.SYMBOL_name; delete animationData.ANIMATION.name; const simplifiedAnimationData = { s: [], i: [], LAYERS: animationData.ANIMATION.TIMELINE.LAYERS, metadata: animationData.metadata }; simplifiedAnimationData.LAYERS.forEach(l => { delete l.Layer_name; l.Frames.forEach(f => { delete f.duration; delete f.index; f.elements.forEach(e => { let snIndex = s_n.indexOf(e.SYMBOL_Instance.SYMBOL_name); if (snIndex === -1) { s_n.push(e.SYMBOL_Instance.SYMBOL_name); snIndex = s_n.length - 1; } e.SYMBOL_Instance.SYMBOL_name = snIndex; if (e.SYMBOL_Instance.Instance_Name.length === 0) { delete e.SYMBOL_Instance.Instance_Name; } else { let inIndex = i_n.indexOf(e.SYMBOL_Instance.Instance_Name); if (inIndex === -1) { i_n.push(e.SYMBOL_Instance.Instance_Name); inIndex = i_n.length - 1; } e.SYMBOL_Instance.Instance_Name = inIndex; } delete e.SYMBOL_Instance.Matrix3D; delete e.SYMBOL_Instance.bitmap; delete e.SYMBOL_Instance.transformationPoint; delete e.SYMBOL_Instance.symbolType; e.SYMBOL_Instance.DecomposedMatrix.Position = `${Math.round(e.SYMBOL_Instance.DecomposedMatrix.Position.x)}|${Math.round( e.SYMBOL_Instance.DecomposedMatrix.Position.y )}`; if (e.SYMBOL_Instance.DecomposedMatrix.Rotation.z === 0) { delete e.SYMBOL_Instance.DecomposedMatrix.Rotation; } else { e.SYMBOL_Instance.DecomposedMatrix.Rotation = Number.parseFloat( e.SYMBOL_Instance.DecomposedMatrix.Rotation.z.toFixed(2) ); } if (e.SYMBOL_Instance.DecomposedMatrix.Scaling.x === 1 && e.SYMBOL_Instance.DecomposedMatrix.Scaling.y === 1) { delete e.SYMBOL_Instance.DecomposedMatrix.Scaling; } else { e.SYMBOL_Instance.DecomposedMatrix.Scaling = `${ e.SYMBOL_Instance.DecomposedMatrix.Scaling.x === 1 ? "" : Number.parseFloat(e.SYMBOL_Instance.DecomposedMatrix.Scaling.x.toFixed(2)) }|${ e.SYMBOL_Instance.DecomposedMatrix.Scaling.y === 1 ? "" : Number.parseFloat(e.SYMBOL_Instance.DecomposedMatrix.Scaling.y.toFixed(2)) }`; } }); }); }); simplifiedAnimationData.s = s_n; simplifiedAnimationData.i = i_n; let simplifiedAnimationDataJSON = JSON.stringify(simplifiedAnimationData); simplifiedAnimationDataJSON = simplifiedAnimationDataJSON.replace(new RegExp('"LAYERS"', "g"), '"l"'); simplifiedAnimationDataJSON = simplifiedAnimationDataJSON.replace(new RegExp('"Frames"', "g"), '"f"'); simplifiedAnimationDataJSON = simplifiedAnimationDataJSON.replace(new RegExp('"metadata"', "g"), '"m"'); simplifiedAnimationDataJSON = simplifiedAnimationDataJSON.replace(new RegExp('"framerate"', "g"), '"f"'); simplifiedAnimationDataJSON = simplifiedAnimationDataJSON.replace(new RegExp('"Position"', "g"), '"p"'); simplifiedAnimationDataJSON = simplifiedAnimationDataJSON.replace(new RegExp('"Rotation"', "g"), '"r"'); simplifiedAnimationDataJSON = simplifiedAnimationDataJSON.replace(new RegExp('"Scaling"', "g"), '"s"'); simplifiedAnimationDataJSON = simplifiedAnimationDataJSON.replace(new RegExp('"Instance_Name"', "g"), '"i"'); simplifiedAnimationDataJSON = simplifiedAnimationDataJSON.replace(new RegExp('"SYMBOL_name"', "g"), '"s"'); simplifiedAnimationDataJSON = simplifiedAnimationDataJSON.replace(new RegExp('"SYMBOL_Instance"', "g"), '"s"'); simplifiedAnimationDataJSON = simplifiedAnimationDataJSON.replace(new RegExp('"DecomposedMatrix"', "g"), '"t"'); simplifiedAnimationDataJSON = simplifiedAnimationDataJSON.replace(new RegExp('"color"', "g"), '"c"'); simplifiedAnimationDataJSON = simplifiedAnimationDataJSON.replace(new RegExp('"mode"', "g"), '"m"'); simplifiedAnimationDataJSON = simplifiedAnimationDataJSON.replace(new RegExp('"alphaMultiplier"', "g"), '"am"'); simplifiedAnimationDataJSON = simplifiedAnimationDataJSON.replace(new RegExp('"AlphaOffset"', "g"), '"ao"'); simplifiedAnimationDataJSON = simplifiedAnimationDataJSON.replace(new RegExp('"elements"', "g"), '"e"'); simplifiedAnimationDataJSON = simplifiedAnimationDataJSON.replace(new RegExp('"RedMultiplier"', "g"), '"rm"'); simplifiedAnimationDataJSON = simplifiedAnimationDataJSON.replace(new RegExp('"greenMultiplier"', "g"), '"gm"'); simplifiedAnimationDataJSON = simplifiedAnimationDataJSON.replace(new RegExp('"blueMultiplier"', "g"), '"bm"'); simplifiedAnimationDataJSON = simplifiedAnimationDataJSON.replace(new RegExp('"redOffset"', "g"), '"ro"'); simplifiedAnimationDataJSON = simplifiedAnimationDataJSON.replace(new RegExp('"greenOffset"', "g"), '"go"'); simplifiedAnimationDataJSON = simplifiedAnimationDataJSON.replace(new RegExp('"blueOffset"', "g"), '"bo"'); simplifiedAnimationDataJSON = simplifiedAnimationDataJSON.replace(new RegExp('"tintColor"', "g"), '"tc"'); simplifiedAnimationDataJSON = simplifiedAnimationDataJSON.replace(new RegExp('"tintMultiplier"', "g"), '"tm"'); simplifiedAnimationDataJSON = simplifiedAnimationDataJSON.replace(new RegExp('"Alpha"', "g"), '"a"'); simplifiedAnimationDataJSON = simplifiedAnimationDataJSON.replace(new RegExp('"Advanced"', "g"), '"ad"'); simplifiedAnimationDataJSON = simplifiedAnimationDataJSON.replace(new RegExp('"Tint"', "g"), '"t"'); fs.writeFileSync(`${destination}${animate.name}`, simplifiedAnimationDataJSON, "utf8"); }; tree.children.forEach(animate => handleAnimate(animate));