UNPKG

2.88 kBPlain TextView Raw
1import fileUtil = require("./tool/FileUtil");
2import fs = require("fs");
3import path = require("path");
4
5interface IMcInfo {
6 mc: IMc1Data;
7 res: { [url: string]: IResData };
8}
9
10interface IMc1Data {
11 mc1: IMcData;
12}
13
14interface IMcData {
15 events: any[];
16 frameRate: number;
17 labels: ILabelData[];
18 frames: IFrameData[];
19}
20
21interface ILabelData {
22 name: string;
23 end: number;
24 frame: number;
25}
26
27interface IFrameData {
28 x: number;
29 y: number;
30 res: string;
31}
32
33interface IResData {
34 x: number;
35 y: number;
36 w: number;
37 h: number;
38}
39
40interface INewMcInfo {
41 len: number;
42 speed: number;
43 subtexture: { [index: number]: ITextData };
44}
45
46interface ITextData {
47 0: number;
48 1: number;
49 2: number;
50 3: number;
51 4: number;
52 5: number;
53}
54
55class McTrans {
56
57 private _jsUrl: string;
58 constructor(jsUrl: string) {
59 let self = this;
60 self._jsUrl = jsUrl;
61 self.trans();
62 }
63
64 private trans(): void {
65 let self = this;
66 fileUtil.FileUtil.walkDir(path.join(this._jsUrl), self.onFile, null, self);
67 }
68
69 private onFile(url: string): void {
70 let self = this;
71 if (path.extname(url) != ".json") return;
72 let jsStr = fs.readFileSync(url, 'utf-8');
73 let mcInfo: IMcInfo = JSON.parse(jsStr);
74 let newMcInfo = self.transMc(mcInfo);
75 if (newMcInfo) {
76 let newJs = JSON.stringify(newMcInfo);
77 fs.writeFileSync(url, newJs);
78 } else {
79 console.log(mcInfo);
80 console.log("错误文件Url = ", url);
81 }
82 }
83
84 private transMc(mcInfo: IMcInfo): INewMcInfo {
85 let self = this;
86 let url: string;
87 let index: number;
88 let indexStr: string;
89 let frame: IFrameData;
90 let resInfo: IResData;
91 let mc1Data: IMc1Data = mcInfo.mc;
92 if (mc1Data) {
93 let mcData: IMcData;
94 for (let key in mc1Data) {
95 mcData = mc1Data[key];
96 }
97 let frames = mcData.frames;
98 let newMcInfo = { len: 0, speed: 0, subtexture: {} };
99 newMcInfo.speed = mcData.frameRate;
100 for (let i = 0, len = frames.length; i < len; i++) {
101 frame = frames[i];
102 index = i + 1;
103 resInfo = mcInfo.res[frame.res];
104 indexStr = index >= 10 ? "0" + index : "00" + index;
105 newMcInfo.subtexture[indexStr] = { "0": resInfo.x, "1": resInfo.y, "2": resInfo.w, "3": resInfo.h, "4": frame.x, "5": frame.y };
106 }
107 newMcInfo.len = frames.length;
108 return newMcInfo;
109
110 }
111 return null;
112 }
113}
114
115export function run(jsUrl: string): void {
116 new McTrans(jsUrl);
117}