@koreez/phaser2-animate
Version:
111 lines (106 loc) • 6.63 kB
JavaScript
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));