添加天梯排行榜,修复setHour有时差的bug

This commit is contained in:
luying
2020-11-06 17:31:23 +08:00
parent bd93d9dc1c
commit 04ecef03b5
29 changed files with 285 additions and 148 deletions

View File

@@ -1,5 +1,6 @@
import fs = require('fs');
import path = require('path');
import { decodeStr, decodeStrSingle } from './util';
let gamedata = {};
const wars = ['dic_zyz_gk_main', 'dic_zyz_gk_mainElite', 'dic_zyz_gk_daily', 'dic_zyz_gk_event', 'dic_zyz_gk_tower', 'dic_zyz_gk_expedition']; // 关卡相关的表
@@ -35,7 +36,7 @@ function parseTowerData() {
}
function parseTowerTaskData() {
const towerTaskFile = 'dic_zyz_tower_tasks';
const towerTaskFile = 'dic_zyz_search';
const towerTaskData = gamedata['jsons'][towerTaskFile] || [];
towerTaskData.forEach(elem => {
if (elem && elem.taskId) {
@@ -172,7 +173,6 @@ export function getLvByExp(exp: number) {
let curLv = 0;
let entries = levelInfos.entries();
for (let [lv, {sum}] of entries) {
console.log(lv, sum)
if(exp < sum) {
curLv = lv; break;
}
@@ -182,6 +182,5 @@ export function getLvByExp(exp: number) {
}
export function getExpByLv(lv: number) {
console.log(lv)
return levelInfos.get(lv);
}

View File

@@ -19,6 +19,7 @@ const moment = require('moment');
if(str == '&'|| !str) {
return []
} else {
console.log(str)
return str.split(splitForm).map(cur => {
return decodeStrSingle(type,cur);
});
@@ -50,7 +51,7 @@ const moment = require('moment');
result = { gid: parseInt(gid), count: parseInt(count), frequency: parseInt(frequency) };
break;
}
case 'eventSuitLevel': {
case 'suitLevel': {
let [min, max] = arr;
if(isNaN(min) || isNaN(max)) throw new Error('data table format wrong');
result = { min: parseInt(min), max: parseInt(max) };
@@ -180,7 +181,7 @@ export function deltaDays(preTime: Date, proTime: Date): number {
*/
export function shouldRefresh(preTime: Date, now: Date, hour: number, deltaDay = 1): boolean {
let curTime = new Date(now.getTime());
let refeshTime = curTime.setHours(hour, 0, 0, 0);
let refeshTime = setLocalHours(hour, curTime);
if (refeshTime - preTime.getTime() > deltaDay * 24 * 60 * 60 * 1000 && curTime.getTime() >= refeshTime) {
return true;
}
@@ -197,9 +198,8 @@ export function getRefTime(now = new Date(), hour: number, day = 0) {
if (curTime.getHours() < hour) {
curTime.setDate(curTime.getDate() - 1);
}
curTime.setHours(hour, 0, 0, 0);
curTime = new Date(curTime.getTime() + day * 24 * 60 * 60 * 1000);
return curTime;
let today = setLocalHours(hour, curTime);
return new Date(today + day * 24 * 60 * 60 * 1000);
}
export function getRandEelm(source: Array<any> = [], cnt = 1): Array<any> {
@@ -301,4 +301,14 @@ export function calculateNum(ratio: {A: number, B: number}, params: {num: number
console.error(e);
return defaultVal;
}
}
export function setLocalHours(hour: number, curTime = new Date()) {
// curTime: 格林威治时间
let offset = curTime.getTimezoneOffset(); // 格林威治时间和本地时间之间的时差(分)
console.log('offset', offset);
let localTime = new Date(curTime.getTime() - offset * 60 * 1000 + 8 * 60 * 60 * 1000); // 中国时间
localTime.setUTCHours(hour, 0, 0, 0); // 中国的几点
return localTime.getTime() + offset * 60 * 1000 - 8 * 60 * 60 * 1000; // 回到格林威治时间
}