Files
svn/tech/tools/convertSimplePath.js
2025-08-04 10:46:00 +08:00

128 lines
3.1 KiB
JavaScript

const fs = require('fs');
const path = require('path');
let Converter = {
sourcePath: __dirname + '/' + process.argv[2],
destPath: __dirname + '/' + process.argv[3],
start() {
this.traversalDir(this.sourcePath, this.destPath);
},
// 遍历文件夹找到
traversalDir: function(srcDir, destDir) {
let files = [];
if ( fs.existsSync(srcDir) ) { //判断给定的路径是否存在
files = fs.readdirSync(srcDir); //返回文件和子目录的数组
for (let i = 0, len = files.length; i < len; i++) {
let file = files[i];
let curPath = path.join(srcDir, file);
fs.readFile(curPath, (err, data) => {
if (err) {
console.error(err);
return;
}
console.log('Success to read file: ' +curPath);
let str = this.writePath(data);
if (str && str.length > 0) {
let destFile = path.join(destDir, file);
fs.writeFile(destFile, str, (err) => {
if (err) {
console.error(err);
return;
}
console.log('Success to write file: ' +destFile);
});
}
});
}
}
return files;
},
writePath(data) {
if (!data || data.length <= 0) {
cc.warn('writePath: path is invalid');
return '';
}
let str = '';
try {
let paths = JSON.parse(data);
str = '{';
for (let i = 0, len = paths.length; i < len; i++) {
let path = paths[i];
str += '"' + path.pathId + '":';
str += '"' + path.speeds.join('|') + ';';
str += this.writePoints(path.points) + ';';
if (!path.ctrls) {
str += path.type + '"';
} else {
str += path.type + ';';
str += this.writeCtrls(path.ctrls) + '"';
}
if ((i+1) < len) {
str += ',';
}
}
str += '}';
} catch(e) {
cc.error('writePath: error to format path');
}
return str;
},
writePoints(arr) {
if (!arr || arr.length <= 0) {
cc.warn('writePoint: arr is invalid');
return '';
}
let str = '';
try {
for (let i = 0, len = arr.length; i < len; i++) {
let pt = arr[i];
str += pt.x + ',' + pt.y;
if ((i+1) < len) {
str += '|';
}
}
} catch(e) {
cc.error('writePoints: error to format points');
}
return str;
},
writeCtrls(arr) {
if (!arr || arr.length <= 0) {
cc.warn('writeCtrls: arr is invalid');
return '';
}
let str = '';
try {
for (let i = 0, len = arr.length; i < len; i++) {
let pt = arr[i];
str += pt.x + ',' + pt.y + ',' + pt.z + ',' + pt.w;
if ((i+1) < len) {
str += '|';
}
}
} catch(e) {
cc.error('writeCtrls: error to format ctrls');
}
return str;
}
};
module.exports = Converter;
Converter.start();