全局:加载json方法全部改为最新
This commit is contained in:
@@ -5,27 +5,26 @@ import { HANG_UP_CONSTS, TOWER_TASK_CONST, REDIS_KEY, TASK_TYPE } from './../con
|
||||
import { BattleRecordModel } from './../db/BattleRecord';
|
||||
import { TowerRecordModel } from './../db/TowerRecord';
|
||||
import { RoleModel } from './../db/Role';
|
||||
import { getHeroInfoById, getJobInfoById, getTowerDataByLv, getTaskById, getGamedata, getWarJsons } from "../pubUtils/gamedata"
|
||||
import { decodeArrayStr, shouldRefresh, resResult, decodeStr, cal, getRandomWithWeight, getRefTime, decodeStrSingle, genCode } from '../pubUtils/util';
|
||||
import { shouldRefresh, resResult, cal, getRandEelmWithWeight, getRefTime } from '../pubUtils/util';
|
||||
import { STATUS } from '../consts/statusCode';
|
||||
import { HangUpSpdUpRecModel } from '../db/HangUpSpdUpRec';
|
||||
import { TowerTaskRecModel } from '../db/TowerTaskRec';
|
||||
import { cloneDeep } from 'lodash';
|
||||
import { Rank } from './rankService';
|
||||
import { checkTask } from './taskService';
|
||||
import { getRandExpedition } from '../pubUtils/data';
|
||||
import { getRandExpedition, gameData } from '../pubUtils/data';
|
||||
import { ItemInter, RewardInter } from '../pubUtils/interface';
|
||||
|
||||
export async function checkTowerWar(roleId: string, battleId: number, heroes: Array<number>) {
|
||||
const battleIdStr = `${battleId}`;
|
||||
let { towerLv } = await RoleModel.findByRoleId(roleId);
|
||||
const towerInfo = getTowerDataByLv(towerLv);
|
||||
const towerInfo = gameData.tower.get(towerLv);
|
||||
if (!towerInfo) {
|
||||
console.error(`天梯层数异常,lv ${towerLv} by ${roleId}`);
|
||||
return { status: -1, resResult: resResult(STATUS.TOWER_INFO_NOT_FOUND) };
|
||||
}
|
||||
const warIds = decodeArrayStr(towerInfo.warArray, '&') || [];
|
||||
const warIds = towerInfo.warArray;
|
||||
|
||||
if (warIds.indexOf(battleIdStr) === -1) {
|
||||
if (warIds.indexOf(battleId) === -1) {
|
||||
return { status: -1, resResult: resResult(STATUS.TOWER_WRONG_BATTLE_ID) };
|
||||
}
|
||||
|
||||
@@ -70,24 +69,24 @@ export async function towerBattleEnd(sid: string, funcs: number[], roleId: strin
|
||||
}
|
||||
})
|
||||
let newRec = await TowerRecordModel.updateRecord(roleId, towerLv, battleCode, battleId, heroes, inc);
|
||||
let towerReward = null;
|
||||
let towerReward: RewardInter[] = null;
|
||||
if (inc === 1) {
|
||||
let role = await RoleModel.towerLvUp(roleId);
|
||||
// 更新redis
|
||||
let r = new Rank(REDIS_KEY.TOWER_RANK, { serverId });
|
||||
await r.setRankWithRoleInfo(roleId, towerLv + 1, role.towerUpTime.getTime(), role);
|
||||
|
||||
const nextTowerInfo = getTowerDataByLv(towerLv + 1);
|
||||
const nextTowerInfo = gameData.tower.get(towerLv + 1);
|
||||
if (nextTowerInfo) {
|
||||
const { warArray } = nextTowerInfo;
|
||||
const sts = decodeArrayStr(warArray, '&').map(id => {
|
||||
return {warId: parseInt(id), status: false};
|
||||
const sts = warArray.map(id => {
|
||||
return {warId: id, status: false};
|
||||
});
|
||||
|
||||
await TowerRecordModel.createRecord({roleId, lv: towerLv + 1, warStatus: sts});
|
||||
|
||||
}
|
||||
const { reward } = getTowerDataByLv(towerLv);
|
||||
const { reward } = gameData.tower.get(towerLv);
|
||||
if (reward) towerReward = reward;
|
||||
if (towerLv + 1 == HANG_UP_CONSTS.ENABLE_LV) {
|
||||
await startHangUp(roleId, roleName);
|
||||
@@ -129,10 +128,10 @@ export async function calcuHangUpReward(roleId: string, speedUp = false, speedUp
|
||||
return {status: -1, resResult: resResult(STATUS.TOWER_HANG_UP_NOT_START)}
|
||||
}
|
||||
|
||||
let towerInfo = getTowerDataByLv(towerLv - 1); // towerLv 是当前层,奖励计算按照已经通过的层,即上一层
|
||||
let towerInfo = gameData.tower.get(towerLv - 1); // towerLv 是当前层,奖励计算按照已经通过的层,即上一层
|
||||
let timeReward = []; // 奖励
|
||||
let needReceiveGoods = []; // 由于小数,未能领取的奖励
|
||||
let baseReward = decodeStr('decimalReward', towerInfo.rewardOfcollect);
|
||||
let baseReward = towerInfo.rewardOfcollect;
|
||||
|
||||
let { startTime } = await HangUpRecordModel.getCurRec(roleId);
|
||||
let endTime = curTime; // 挂机结束时间,现在到开始时间,经历了10的倍数的时间
|
||||
@@ -217,7 +216,7 @@ async function checkCond(roleId: string, heroes, type: number, param: number, cn
|
||||
case 2:
|
||||
for(let seqId of heroes) {
|
||||
let {hid} = await HeroModel.findBySeqIdAndRole(seqId, roleId);
|
||||
const hInfo = getHeroInfoById(hid);
|
||||
const hInfo = gameData.hero.get(hid);
|
||||
if (hInfo.camp === param) {
|
||||
heroCnt++;
|
||||
}
|
||||
@@ -226,8 +225,8 @@ async function checkCond(roleId: string, heroes, type: number, param: number, cn
|
||||
case 3:
|
||||
for(let seqId of heroes) {
|
||||
let {hid} = await HeroModel.findBySeqIdAndRole(seqId, roleId);
|
||||
const hInfo = getHeroInfoById(hid);
|
||||
if (getJobInfoById(hInfo.jobid).job_class === param) {
|
||||
const hInfo = gameData.hero.get(hid);
|
||||
if (gameData.job.get(hInfo.jobid).job_class === param) {
|
||||
heroCnt++;
|
||||
}
|
||||
}
|
||||
@@ -241,12 +240,11 @@ async function checkCond(roleId: string, heroes, type: number, param: number, cn
|
||||
return false;
|
||||
}
|
||||
|
||||
export async function checkTaskConditions(roleId: string, heroes: Array<number>, conditionsStr: string) {
|
||||
let condition = decodeStr('towerTaskCondition', conditionsStr);
|
||||
export async function checkTaskConditions(roleId: string, heroes: number[], condition: { type: number, param: number, count: number }[]) {
|
||||
|
||||
let res = true;
|
||||
for (let {type, param, cnt} of condition) {
|
||||
const checkRes = await checkCond(roleId, heroes, type, param, cnt);
|
||||
for (let {type, param, count} of condition) {
|
||||
const checkRes = await checkCond(roleId, heroes, type, param, count);
|
||||
if (!checkRes) {
|
||||
res = false;
|
||||
break;
|
||||
@@ -264,10 +262,9 @@ export async function checkTaskConditions(roleId: string, heroes: Array<number>,
|
||||
*/
|
||||
export async function createCurTasks(towerLv: number, batchCode: string, roleId: string, roleName: string, hideNum: number, showNum: number, rids: Array<number>) {
|
||||
let randomList = [];
|
||||
let dicTask = getGamedata('dic_zyz_search');
|
||||
for(let task of dicTask) {
|
||||
let {suitFloor} = task;
|
||||
let {min, max} = decodeStrSingle('suitLevelSingle', suitFloor);
|
||||
let dicTask = gameData.towerTask;
|
||||
for(let [ _id, task] of dicTask) {
|
||||
let {suitFloor: {min, max} } = task;
|
||||
let flag = max?(towerLv >= min && towerLv <= max): (towerLv >= min);
|
||||
if(flag) {
|
||||
randomList.push(task);
|
||||
@@ -279,7 +276,7 @@ export async function createCurTasks(towerLv: number, batchCode: string, roleId:
|
||||
let taskIds = [];
|
||||
for(let i = 0; i < num; i++) {
|
||||
let list = randomList.filter(cur => !rids.includes(cur.taskId));
|
||||
let {dic: tmp} = getRandomWithWeight(list);
|
||||
let {dic: tmp} = getRandEelmWithWeight(list);
|
||||
if(tmp) {
|
||||
taskIds.push(tmp.taskId);
|
||||
rids.push(tmp.taskId)
|
||||
@@ -339,14 +336,16 @@ export function getTaskStatus(status: number, completeTime: Date, curTime: Date)
|
||||
|
||||
export async function getTasksReward(roleId: string, curTime: Date) {
|
||||
let oldTasks = await TowerTaskRecModel.getCurTasks(roleId);
|
||||
let goods = [];
|
||||
let goods: ItemInter[] = [];
|
||||
for(let task of oldTasks) {
|
||||
let {completeTime, reward, termsForAdd, additionalReward} = getTaskById(task.taskId);
|
||||
let {completeTime, reward, termsForAdd, additionalReward} = gameData.towerTask.get(task.taskId);
|
||||
if (task.sendTime && task.sendTime.getTime() + completeTime * 1000 < curTime.getTime()) {
|
||||
goods = goods.concat(decodeStr('fixReward', reward));
|
||||
goods = goods.concat(reward);
|
||||
if(termsForAdd) {
|
||||
const result = checkTaskConditions(roleId, task.heroes, termsForAdd);
|
||||
goods = goods.concat(decodeStr('fixReward', result?additionalReward:''));
|
||||
if(result) {
|
||||
goods = goods.concat(additionalReward);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -365,7 +364,7 @@ export function getRandRobot(cnt = 1, withAttr = false) {
|
||||
let robots = [];
|
||||
for (let info of setInfo) {
|
||||
if (!info || !info.warId) continue;
|
||||
const warInfo = getWarJsons(info.warId).json;
|
||||
const warInfo = gameData.warJson.get(info.warId);
|
||||
if (!warInfo || !warInfo.length) continue;
|
||||
|
||||
let heroes = [];
|
||||
|
||||
Reference in New Issue
Block a user