镇念塔调整

This commit is contained in:
luying
2020-11-04 20:12:54 +08:00
parent 4effd85f2a
commit 6020037aa6
17 changed files with 844 additions and 511 deletions

View File

@@ -6,7 +6,7 @@ const wars = ['dic_zyz_gk_main', 'dic_zyz_gk_mainElite', 'dic_zyz_gk_daily', 'di
const allWarInfos = new Map<number, any>();
const towerInfos = new Map<number, any>();
const towerTaskInfos = new Map<number, any>();
const towerTasksByQuality = new Map<number, Array<number>>();
const towerTasksByFloor = new Map<number, Array<number>>();
const heroInfos = new Map<number, any>();
const jobInfos = new Map<number, any>();
const levelInfos = new Map<number, {sum: number, cur: number}>();
@@ -28,8 +28,8 @@ function parseTowerData() {
const towerFile = 'dic_zyz_tower';
const towerData = gamedata['jsons'][towerFile] || [];
towerData.forEach(elem => {
if (elem.lv) {
towerInfos.set(elem.lv, elem);
if (elem.towerFloor) {
towerInfos.set(elem.towerFloor, elem);
}
});
}
@@ -40,9 +40,9 @@ function parseTowerTaskData() {
towerTaskData.forEach(elem => {
if (elem && elem.taskId) {
towerTaskInfos.set(elem.taskId, elem);
let tasks = towerTasksByQuality.get(elem.quality) || [];
let tasks = towerTasksByFloor.get(elem.suitFloor) || [];
tasks.push(elem.taskId);
towerTasksByQuality.set(elem.quality, tasks);
towerTasksByFloor.set(elem.suitFloor, tasks);
}
});
}
@@ -153,8 +153,8 @@ export function getTaskById(tid: number) {
return taskInfo;
}
export function getTaskIdByQuality(quality: number) {
const taskIds = towerTasksByQuality.get(quality);
export function getTaskIdByFloor(floor: number) {
const taskIds = towerTasksByFloor.get(floor);
return taskIds;
}

View File

@@ -67,6 +67,18 @@ const moment = require('moment');
result = x;
break;
}
case 'decimalReward': {
let [gid, count] = arr;
if(isNaN(gid) || isNaN(count)) throw new Error('data table format wrong');
result = { gid: parseInt(gid), count: parseFloat(count) };
break;
}
case 'towerTaskCondition': {
let [type, param, cnt] = arr;
if(isNaN(type) || isNaN(param)|| isNaN(cnt)) throw new Error('data table format wrong');
result = { type: parseInt(type), param: parseInt(param), cnt: parseInt(cnt) };
break;
}
}
return result;
};
@@ -76,9 +88,14 @@ const moment = require('moment');
* 将 | 分隔的字符串解析为数组a|b|c 解析为[a, b, c]
* @param str 要解析的字符串
*/
export function decodeArrayStr(str: string) {
if(str == '&') str = '';
return str.split('|');
export function decodeArrayStr(str: string, splitForm='|') {
let last = str.substr(str.length-1, 1);
if(last == '&') str = str.substr(0, str.length - 1);
if(str == '') {
return []
} else {
return str.split(splitForm);
}
}
/**
@@ -188,4 +205,64 @@ export function resResult(status: {code: number, simStr: string}, data = null, c
console.log(`normal err, code: ${code}, des: ${customMsg || simStr}`);
}
return {code, msg: customMsg || simStr, data};
}
}
// 消除 js 浮点计算bug
export const cal = {
add: function(a:number, b:number) {
var c:number, d:number, e:number;
try {
c = a.toString().split(".")[1].length;
} catch (f) {
c = 0;
}
try {
d = b.toString().split(".")[1].length;
} catch (f) {
d = 0;
}
e = Math.pow(10, Math.max(c, d));
return (this.mul(a, e) + this.mul(b, e)) / e;
},
sub: function sub(a:number, b:number) {
var c:number, d:number, e:number;
try {
c = a.toString().split(".")[1].length;
} catch (f) {
c = 0;
}
try {
d = b.toString().split(".")[1].length;
} catch (f) {
d = 0;
}
e = Math.pow(10, Math.max(c, d));
return (this.mul(a, e) - this.mul(b, e)) / e;
},
mul: function mul(a:number, b:number) {
var c = 0,
d = a.toString(),
e = b.toString();
try {
c += d.split(".")[1].length;
} catch (f) {}
try {
c += e.split(".")[1].length;
} catch (f) {}
return Number(d.replace(".", "")) * Number(e.replace(".", "")) / Math.pow(10, c);
},
div: function div(a:number, b:number) {
var c:number, d:number, e = 0,
f = 0;
try {
e = a.toString().split(".")[1].length;
} catch (g) {}
try {
f = b.toString().split(".")[1].length;
} catch (g) {}
c = Number(a.toString().replace(".", ""));
d = Number(b.toString().replace(".", ""));
return this.mul(c / d, Math.pow(10, f - e));
}
};