1 | import fileUtil = require("./tool/FileUtil");
|
2 | import fs = require("fs");
|
3 | import path = require("path");
|
4 |
|
5 | interface IMcInfo {
|
6 | mc: IMc1Data;
|
7 | res: { [url: string]: IResData };
|
8 | }
|
9 |
|
10 | interface IMc1Data {
|
11 | mc1: IMcData;
|
12 | }
|
13 |
|
14 | interface IMcData {
|
15 | events: any[];
|
16 | frameRate: number;
|
17 | labels: ILabelData[];
|
18 | frames: IFrameData[];
|
19 | }
|
20 |
|
21 | interface ILabelData {
|
22 | name: string;
|
23 | end: number;
|
24 | frame: number;
|
25 | }
|
26 |
|
27 | interface IFrameData {
|
28 | x: number;
|
29 | y: number;
|
30 | res: string;
|
31 | }
|
32 |
|
33 | interface IResData {
|
34 | x: number;
|
35 | y: number;
|
36 | w: number;
|
37 | h: number;
|
38 | }
|
39 |
|
40 | interface INewMcInfo {
|
41 | len: number;
|
42 | speed: number;
|
43 | subtexture: { [index: number]: ITextData };
|
44 | }
|
45 |
|
46 | interface ITextData {
|
47 | 0: number;
|
48 | 1: number;
|
49 | 2: number;
|
50 | 3: number;
|
51 | 4: number;
|
52 | 5: number;
|
53 | }
|
54 |
|
55 | class 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 |
|
115 | export function run(jsUrl: string): void {
|
116 | new McTrans(jsUrl);
|
117 | }
|