天梯派遣刷新逻辑
This commit is contained in:
@@ -7,8 +7,8 @@ import { RoleModel } from './../../../db/Role';
|
||||
import { TowerRecordModel } from './../../../db/TowerRecord';
|
||||
import { Application, BackendSession } from 'pinus';
|
||||
import { getTaskById, getTowerDataByLv } from '../../../pubUtils/gamedata';
|
||||
import { decodeArrayStr, resResult, shouldRefresh, calculateNum } from '../../../pubUtils/util';
|
||||
import { calcuHangUpReward, checkTaskConditions, checkHangUpSpdUpCnt, createCurTasks, treatTask, getRemainTime, getTasksReward } from '../../../services/battleService';
|
||||
import { decodeArrayStr, resResult, shouldRefresh, calculateNum, getRefTime, genCode } from '../../../pubUtils/util';
|
||||
import { calcuHangUpReward, checkTaskConditions, checkHangUpSpdUpCnt, createCurTasks, treatTask, getRemainTime, getTasksReward, getTaskStatus, getDoingOrWaitingTasks } from '../../../services/battleService';
|
||||
import { handleFixedReward, handleReward } from '../../../services/rewardService';
|
||||
|
||||
export default function(app: Application) {
|
||||
@@ -137,17 +137,23 @@ export class TowerBattleHandler {
|
||||
let roleId = session.get('roleId');
|
||||
let roleName = session.get('roleName');
|
||||
let curTime = new Date();
|
||||
let { towerLv, towerTaskReCnt = 0, towerTaskRefTime = curTime } = await RoleModel.findByRoleId(roleId);
|
||||
let needRefresh = shouldRefresh(towerTaskRefTime, curTime, TOWER_TASK_CONST.REFRESH_TIME);
|
||||
|
||||
let { towerLv, towerTaskRefTime } = await RoleModel.findByRoleId(roleId);
|
||||
let curTasks = await TowerTaskRecModel.getCurTasks(roleId); // 当前显示中的任务
|
||||
|
||||
const needRefresh = shouldRefresh(towerTaskRefTime, curTime, TOWER_TASK_CONST.REFRESH_TIME);
|
||||
if(needRefresh) {
|
||||
towerTaskReCnt = 0;
|
||||
}
|
||||
let costGold = calculateNum(GOLD_COST_RATIO.TPWER_TASK_REF, {num: towerTaskReCnt}, 200);
|
||||
let curTasks = await TowerTaskRecModel.getCurTasks(roleId);
|
||||
if (!curTasks || curTasks.length == 0) {
|
||||
curTasks = await createCurTasks(towerLv, roleId, roleName);
|
||||
const batchCode = genCode(8);
|
||||
await RoleModel.resetTowerCnt(roleId, curTime); // 重置派遣次数
|
||||
let {waitingTaskCode, doingTaskCode} = getDoingOrWaitingTasks(curTasks, curTime);
|
||||
await TowerTaskRecModel.hideTask(roleId, waitingTaskCode); // 隐藏没有在做的任务
|
||||
await TowerTaskRecModel.updateBatchCode(roleId, doingTaskCode, batchCode); // 更新留下来的旧任务的batchCode
|
||||
await createCurTasks(towerLv, batchCode, roleId, roleName, doingTaskCode.length); // 新建任务
|
||||
curTasks = await TowerTaskRecModel.getCurTasks(roleId);
|
||||
}
|
||||
|
||||
let refRemainTime = getRemainTime(curTime);
|
||||
let costGold = TOWER_TASK_CONST.COST_GOLD;
|
||||
|
||||
return resResult(STATUS.SUCCESS, { curTasks: treatTask(curTasks, curTime), refRemainTime, nextCostGold: costGold });
|
||||
}
|
||||
@@ -156,36 +162,34 @@ export class TowerBattleHandler {
|
||||
let roleId = session.get('roleId');
|
||||
let roleName = session.get('roleName');
|
||||
let curTime = new Date();
|
||||
let { towerLv, towerTaskReCnt = 0, towerTaskRefTime = curTime } = await RoleModel.findByRoleId(roleId);
|
||||
let needRefresh = shouldRefresh(towerTaskRefTime, curTime, TOWER_TASK_CONST.REFRESH_TIME);
|
||||
if(needRefresh) {
|
||||
towerTaskReCnt = 0;
|
||||
let { towerLv, towerTaskCnt = 0 } = await RoleModel.findByRoleId(roleId);
|
||||
if(TOWER_TASK_CONST.MAX_TASK_REF_CNT <= towerTaskCnt) { // 每派遣一个任务加一,最多8个完成任务
|
||||
return resResult(STATUS.TOWER_REF_CNT_NOT_ENOUGH);
|
||||
}
|
||||
let costGold = calculateNum(GOLD_COST_RATIO.TPWER_TASK_REF, {num: towerTaskReCnt}, 200);
|
||||
let costGold = TOWER_TASK_CONST.COST_GOLD;
|
||||
let {gold} = await RoleModel.findByRoleId(roleId);
|
||||
if(costGold > gold) {
|
||||
return resResult(STATUS.TOWER_GOLD_NOT_ENOUGH);
|
||||
}
|
||||
await RoleModel.increaseTowerRefCnt(roleId, needRefresh, curTime);
|
||||
|
||||
// tmp: 将刷掉的旧任务的奖励发送到邮件中
|
||||
let oldReward = await getTasksReward(roleId, curTime);
|
||||
console.log(JSON.stringify(oldReward));
|
||||
await TowerTaskRecModel.refreshTask(roleId); // 刷掉旧的任务
|
||||
// 只刷掉当前面板上没有做派遣的任务
|
||||
const batchCode = genCode(8);
|
||||
let curTasks = await TowerTaskRecModel.getCurTasks(roleId); // 当前显示中的任务
|
||||
let {waitingTaskCode, doingTaskCode} = getDoingOrWaitingTasks(curTasks, curTime);
|
||||
await TowerTaskRecModel.hideTask(roleId, waitingTaskCode); // 隐藏没有在做的任务
|
||||
await TowerTaskRecModel.updateBatchCode(roleId, doingTaskCode, batchCode); // 更新留下来的旧任务的batchCode
|
||||
await createCurTasks(towerLv, batchCode, roleId, roleName, 0);
|
||||
curTasks = await TowerTaskRecModel.getCurTasks(roleId);
|
||||
|
||||
|
||||
let curTasks = await createCurTasks(towerLv, roleId, roleName); // 刷出新的任务
|
||||
|
||||
let nextCostGold = calculateNum(GOLD_COST_RATIO.TPWER_TASK_REF, {num: towerTaskReCnt + 1}, 200);
|
||||
let refRemainTime = getRemainTime(curTime);
|
||||
return resResult(STATUS.SUCCESS, { curTasks: treatTask(curTasks, curTime), costGold, nextCostGold, refRemainTime});
|
||||
return resResult(STATUS.SUCCESS, { curTasks: treatTask(curTasks, curTime), costGold, nextCostGold:costGold, refRemainTime});
|
||||
}
|
||||
|
||||
async sendTaskHero(msg: {batchCode: string, tasks: Array<{taskCode: string, heroes: Array<number>}>}, session: BackendSession) {
|
||||
let roleId = session.get('roleId');
|
||||
|
||||
const curTime = new Date();
|
||||
const curTasks = await TowerTaskRecModel.getCurTasks(roleId); // 当前一批的任务
|
||||
let curTasks = await TowerTaskRecModel.getCurTasks(roleId); // 当前一批的任务
|
||||
if (!curTasks || curTasks.length == 0) {
|
||||
return resResult(STATUS.TOWER_TASK_NOT_FOUND);
|
||||
}
|
||||
@@ -203,7 +207,7 @@ export class TowerBattleHandler {
|
||||
return resResult(STATUS.TOWER_TASK_MISSING)
|
||||
}
|
||||
let taskInfo = getTaskById(curTask.taskId);
|
||||
if (task.heroes.length > taskInfo.actorNeeded) { // 武将数,从策划表中读取
|
||||
if (task.heroes.length == taskInfo.actorNeeded) { // 武将数,从策划表中读取
|
||||
return resResult(STATUS.TOWER_TASK_MAX_HERO);
|
||||
}
|
||||
if (tasksCode.indexOf(task.taskCode) === -1) {
|
||||
@@ -222,9 +226,11 @@ export class TowerBattleHandler {
|
||||
if (!recs || recs.length === 0) {
|
||||
return resResult(STATUS.TOWER_TASK_SEND_ERR);
|
||||
}
|
||||
await RoleModel.increaseTowerCnt(roleId, tasks.length)
|
||||
let refRemainTime = getRemainTime(curTime);
|
||||
|
||||
return resResult(STATUS.SUCCESS, { tasks: treatTask(recs, curTime), refRemainTime });
|
||||
curTasks = await TowerTaskRecModel.getCurTasks(roleId); // 当前显示中的任务
|
||||
return resResult(STATUS.SUCCESS, { tasks: treatTask(curTasks, curTime), refRemainTime });
|
||||
}
|
||||
|
||||
async settleTask(msg: {batchCode: string, taskCode: string}, session: BackendSession) {
|
||||
@@ -234,7 +240,7 @@ export class TowerBattleHandler {
|
||||
let allFlag = !msg.taskCode;
|
||||
|
||||
const curTime = new Date();
|
||||
const curTasks = await TowerTaskRecModel.getCurTasks(roleId);
|
||||
let curTasks = await TowerTaskRecModel.getCurTasks(roleId);
|
||||
if (!curTasks || curTasks.length == 0) {
|
||||
return resResult(STATUS.TOWER_TASK_NOT_FOUND);
|
||||
}
|
||||
@@ -258,10 +264,12 @@ export class TowerBattleHandler {
|
||||
}
|
||||
}
|
||||
}
|
||||
const rec = await TowerTaskRecModel.finishTask(msg.batchCode, compTasks);
|
||||
await TowerTaskRecModel.finishTask(msg.batchCode, compTasks);
|
||||
await TowerTaskRecModel.showTask(roleId, msg.batchCode, compTasks.length);
|
||||
let refRemainTime = getRemainTime(curTime);
|
||||
|
||||
return resResult(STATUS.SUCCESS, { compTasks: treatTask(rec, curTime), goods, refRemainTime });
|
||||
curTasks = await TowerTaskRecModel.getCurTasks(roleId); // 当前显示中的任务
|
||||
return resResult(STATUS.SUCCESS, { compTasks: treatTask(curTasks, curTime), goods, refRemainTime });
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user