103 lines
2.4 KiB
TypeScript
103 lines
2.4 KiB
TypeScript
import { Service } from 'egg';
|
|
const csprng = require('csprng');
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
var gamedata = {};
|
|
|
|
function initData () {
|
|
fs.readdirSync(__dirname + '/../resource/jsons')
|
|
.filter(function(file) {
|
|
return (file.indexOf(".") !== 0) && (file !== "index.js");
|
|
})
|
|
//筛选有文件名且不是index进行遍历
|
|
.forEach(function(file) {
|
|
var name = file.split('.')[0];
|
|
try {
|
|
gamedata[name] = JSON.parse(
|
|
fs.readFileSync(path.resolve(__dirname, "../resource/jsons/" + file))
|
|
);
|
|
} catch(e) {
|
|
console.error('【文件缺少】:' + file);
|
|
gamedata[name] = [];
|
|
}
|
|
|
|
});
|
|
}
|
|
initData();
|
|
|
|
/**
|
|
* Utils Service
|
|
*/
|
|
export default class Utils extends Service {
|
|
/**
|
|
* 生成 len 长度的随机字符串
|
|
* @param len 长度
|
|
* @param radix 基数
|
|
*/
|
|
public generateStr(len: number, radix = 36) {
|
|
return `${csprng(len, radix)}`;
|
|
}
|
|
|
|
public genCode(len) {
|
|
const chars = '123456789ABCDEFGHJKLMNPQRSTWXYZabcdefghijklmnopqrstuvwxyz';
|
|
const charArr = chars.split('');
|
|
let code = '';
|
|
for (let i = 0; i < len; i++) {
|
|
code += charArr[Math.floor(Math.random() * charArr.length)];
|
|
}
|
|
return code;
|
|
}
|
|
|
|
/**
|
|
* 生成指定长度的随机数
|
|
* @param len 随机数长度
|
|
*/
|
|
public generateNum(len: number) {
|
|
let code = '';
|
|
for (let i = 0; i < len; i++) {
|
|
code += parseInt(`${Math.random() * 10}`);
|
|
}
|
|
return code;
|
|
}
|
|
|
|
public exceptionResult(status) {
|
|
const { code, simStr } = status;
|
|
return { status: code, data: simStr };
|
|
}
|
|
|
|
public getGamedata(key) {
|
|
return gamedata[key];
|
|
}
|
|
|
|
public getHeroById(hid) {
|
|
let heros = gamedata['dic_zyz_hero']||[];
|
|
return heros.find(cur => {
|
|
return cur.heroId == hid;
|
|
});
|
|
}
|
|
public getWarById(warid) {
|
|
const wars = ['dic_zyz_gk_main', 'dic_zyz_gk_mainElite', 'dic_zyz_gk_daily', 'dic_zyz_gk_event']; // 关卡相关的表
|
|
let result;
|
|
for(let filename of wars) {
|
|
let warInfo = gamedata[filename]||[];
|
|
for(let war of warInfo) {
|
|
if(war.war_id == warid) {
|
|
result = war; break;
|
|
}
|
|
}
|
|
if(result) break;
|
|
}
|
|
return result||[];
|
|
}
|
|
|
|
public getGoodById(gid) {
|
|
console.log(gid)
|
|
let goodsInfo = gamedata['goods']||[];
|
|
return goodsInfo.find(cur => {
|
|
return cur.good_id == gid
|
|
});
|
|
}
|
|
|
|
}
|