gulpfile.js
var gulp = require('gulp');
var fs = require("fs");
//type 角色0,动画1
var type=1;
var resPath,dirPath,resName;
function SetTypePath(n)
{
switch(n)
{
//角色
case 0:
resPath="../resource/Arts/Animals/xxxA/";
dirPath="Arts/Animals/xxxA";
resName="xxxA.res";
break;
//骰子
case 1:
resPath="../resource/Arts/Animals/xxxB/";
dirPath="Arts/Animals/xxxB";
resName="xxxB.res";
break;
}
}
SetTypePath(1);
var context = {
"gulp": gulp,
"fs": fs,
"in": {
"resPath": resPath,
"dirPath": dirPath
},
"out": {
"resPath": "../resource/",
"dirPath": dirPath
},
"res": {
"ignore": ["default.res.json"],//忽略的文件,包括扩展名
"name": resName,
"preload": [],//需要预加载包, 需要resource下面的完整路径
"image": ["png", "jpeg", "bmp", "jpg"],
"bin": ["fui"],
"json": ["json"],
"text": ["txt"],
"sound": ["mp3"],
"font": ["ttf"]
}
}
gulp.task("res", require("./res.js")(context));
res.json
module.exports = function (context) {
var fs = context["fs"];
var res = context["res"];
return function () {
var resJson = {};
resJson["groups"] = [];
resJson["resources"] = [];
var resPath = context["in"]["resPath"];
var fileNames = fs.readdirSync(resPath);
for (var filename of fileNames) {
if (res["ignore"].indexOf(filename) >= 0) continue;
if (fs.statSync(`${resPath}${filename}`).isFile()) {
let name = getName(filename);
let index = getGroupIndexByName(resJson["groups"], "preload");
if (index == -1) {
var group = {};
group["keys"] = name;
group["name"] = "preload";
resJson["groups"].push(group);
} else {
resJson["groups"][index]["keys"] += "," + name;
}
let resources = {};
let type = getType(filename);
resources["url"] = filename;
resources["type"] = type;
resources["name"] = name;
resJson["resources"].push(resources);
} else {
searchRes(resJson["groups"], resJson["resources"], resPath, filename, context["in"]["dirPath"])
}
}
fs.writeFileSync(`${context["out"]["resPath"]}${res["name"]}.json`, JSON.stringify(resJson, null, 4));//JSON.stringify(assets, null, 4)
}
function searchRes(groups, ress, path, dir,dirPath) {
var fileNames = fs.readdirSync(`${path}${dir}/`);
for (var filename of fileNames) {
if (res["ignore"].indexOf(filename) >= 0) continue;
if (fs.statSync(`${path}${dir}/${filename}`).isFile()) {
let name = getName(filename);
let preloads = res["preload"];
let loadName;
if (preloads.indexOf(dir) >= 0) {
loadName = "preload";
} else {
let lastIndex = dir.lastIndexOf('/');
if (lastIndex >= 0) {
loadName = dir.substring(lastIndex+1);
}else {
loadName = dir;
}
}
let index = getGroupIndexByName(groups, loadName);
if (index == -1) {
var group = {};
group["keys"] = name;
group["name"] = loadName;
groups.push(group);
} else {
groups[index]["keys"] += "," + name;
}
let resources = {};
let type = getType(filename);
resources["url"] = `${dirPath}/${dir}/${filename}`;
resources["type"] = type;
resources["name"] = name;
ress.push(resources);
} else {
searchRes(groups, ress, path, `${dir}/${filename}`,dirPath);
}
}
}
function getGroupIndexByName(groups, name) {
index = 0;
for (var group of groups) {
if (group.name == name) {
return index;
}
index++;
}
return -1;
}
function getName(filename) {
let index = filename.indexOf(".");
let name1;
let name2;
if (index >= 0) {
name1 = filename.substring(0, index);
name2 = filename.substring(index + 1);
} else {
console.log("没有扩展名");
return;
}
return name1 + "_" + name2;
}
function getType(filename) {
let index = filename.indexOf(".");
let name1;
let name2;
if (index >= 0) {
name1 = filename.substring(0, index);
name2 = filename.substring(index + 1);
} else {
console.log("没有扩展名");
return;
}
let type;
let images = res["image"];
index = images.indexOf(name2);
if (index >= 0) {
type = "image";
return type;
}
index = res["bin"].indexOf(name2);
if (index >= 0) {
type = "bin";
return type;
}
index = res["json"].indexOf(name2);
if (index >= 0) {
type = "json";
return type;
}
index = res["text"].indexOf(name2);
if (index >= 0) {
type = "text";
return type;
}
index = res["sound"].indexOf(name2);
if (index >= 0) {
type = "sound";
return type;
}
index = res["font"].indexOf(name2);
if (index >= 0) {
type = "font";
return type;
}
}
}
SetResType.py
import re
import sys
path = "E:/SvnProjects/xxx/xxx/gulps/gulpfile.js"
#修改gulpfile.js文件,设置资源类型
def updatefiles(type):
f = open(path,'r',encoding='utf-8')
alllines=f.readlines()
f.close()
ff = open(path,'w',encoding='utf-8')
for line in alllines:
if re.search('var type=', line):
ff.write('var type='+str(type)+';'+'\n')
else:
ff.write(line)
ff.close()
def openFile(type):
print('type', type)
if type == '0':
print('修改中...')
updatefiles(0)
elif type == '1':
print('修改中...')
updatefiles(1)
else:
print('输入错误')
type = input('\n选择资源类型: 0.角色 1.动画 \n')
if type != '4':
openFile(type)
else:
for i in range(0,1):
openFile(str(i))
print('finished!')
更新xxx.res.json资源文件.bat
python E:\SvnProjects\xxx\xxx\gulps\SetResType.py
gulp res
pause
来源:oschina
链接:https://my.oschina.net/u/4395239/blog/4652932