import fileUtil = require("./tool/FileUtil"); import fs = require("fs"); import path = require("path"); interface IMcInfo { mc: IMc1Data; res: { [url: string]: IResData }; } interface IMc1Data { mc1: IMcData; } interface IMcData { events: any[]; frameRate: number; labels: ILabelData[]; frames: IFrameData[]; } interface ILabelData { name: string; end: number; frame: number; } interface IFrameData { x: number; y: number; res: string; } interface IResData { x: number; y: number; w: number; h: number; } interface INewMcInfo { len: number; speed: number; subtexture: { [index: number]: ITextData }; } interface ITextData { 0: number; 1: number; 2: number; 3: number; 4: number; 5: number; } class McTrans { private _jsUrl: string; constructor(jsUrl: string) { let self = this; self._jsUrl = jsUrl; self.trans(); } private trans(): void { let self = this; fileUtil.FileUtil.walkDir(path.join(this._jsUrl), self.onFile, null, self); } private onFile(url: string): void { let self = this; if (path.extname(url) != ".json") return; let jsStr = fs.readFileSync(url, 'utf-8'); let mcInfo: IMcInfo = JSON.parse(jsStr); let newMcInfo = self.transMc(mcInfo); if (newMcInfo) { let newJs = JSON.stringify(newMcInfo); fs.writeFileSync(url, newJs); } else { console.log(mcInfo); console.log("错误文件Url = ", url); } } private transMc(mcInfo: IMcInfo): INewMcInfo { let self = this; let url: string; let index: number; let indexStr: string; let frame: IFrameData; let resInfo: IResData; let mc1Data: IMc1Data = mcInfo.mc; if (mc1Data) { let mcData: IMcData; for (let key in mc1Data) { mcData = mc1Data[key]; } let frames = mcData.frames; let newMcInfo = { len: 0, speed: 0, subtexture: {} }; newMcInfo.speed = mcData.frameRate; for (let i = 0, len = frames.length; i < len; i++) { frame = frames[i]; index = i + 1; resInfo = mcInfo.res[frame.res]; indexStr = index >= 10 ? "0" + index : "00" + index; newMcInfo.subtexture[indexStr] = { "0": resInfo.x, "1": resInfo.y, "2": resInfo.w, "3": resInfo.h, "4": frame.x, "5": frame.y }; } newMcInfo.len = frames.length; return newMcInfo; } return null; } } export function run(jsUrl: string): void { new McTrans(jsUrl); }