feature:
天梯派遣功能 fix: 天梯挂机等bug修复
This commit is contained in:
@@ -5,9 +5,9 @@ import { HangUpRecordModel } from './../../../db/HangUpRecord';
|
||||
import { RoleModel } from './../../../db/Role';
|
||||
import { TowerRecordModel } from './../../../db/TowerRecord';
|
||||
import { Application, BackendSession } from 'pinus';
|
||||
import { getTaskIdByQuality, getTowerDataByLv } from '../../../util/gamedata';
|
||||
import { getTaskById, getTaskIdByQuality, getTowerDataByLv } from '../../../util/gamedata';
|
||||
import { decodeArrayStr, decodeIdCntArrayStr, getRandEelm } from '../../../util/util';
|
||||
import { calcuHangUpReward } from '../../../services/battleService';
|
||||
import { calcuHangUpReward, checkTaskConditions } from '../../../services/battleService';
|
||||
import { handleFixedReward } from '../../../services/rewardService';
|
||||
|
||||
export default function(app: Application) {
|
||||
@@ -154,23 +154,110 @@ export class TowerBattleHandler {
|
||||
};
|
||||
}
|
||||
|
||||
async getTask(msg: {}, session: BackendSession) {
|
||||
async getTasks(msg: {}, session: BackendSession) {
|
||||
let roleId = session.get('roleId');
|
||||
let roleName = session.get('roleName');
|
||||
let curTask = await TowerTaskRecModel.getCurTask(roleId);
|
||||
if (!curTask) {
|
||||
let curTasks = await TowerTaskRecModel.getCurTasks(roleId);
|
||||
if (!curTasks || curTasks.length == 0) {
|
||||
let taskIds = [];
|
||||
TOWER_TASK_CONST.RAND_CNT.forEach(qualityId => {
|
||||
const ids = getTaskIdByQuality(qualityId);
|
||||
taskIds.concat(getRandEelm(ids, 1));
|
||||
TOWER_TASK_CONST.RAND_CNT.forEach((cnt, idx) => {
|
||||
const ids = getTaskIdByQuality(idx + 1);
|
||||
const tmp = getRandEelm(ids, cnt);
|
||||
taskIds = taskIds.concat(getRandEelm(ids, cnt));
|
||||
})
|
||||
curTask = await TowerTaskRecModel.createTask(roleId, roleName, taskIds);
|
||||
curTasks = await TowerTaskRecModel.createTasks(roleId, roleName, taskIds);
|
||||
}
|
||||
return {
|
||||
code: 200,
|
||||
data: {
|
||||
msg: '成功',
|
||||
curTask
|
||||
curTasks
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
async sendTaskHero(msg: {batchCode: string, tasks: Array<{taskCode: string, heroes: Array<number>}>}, session: BackendSession) {
|
||||
let roleId = session.get('roleId');
|
||||
const curTasks = await TowerTaskRecModel.getCurTasks(roleId);
|
||||
if (!curTasks || curTasks.length == 0) {
|
||||
return { code: 201, data: {msg: '没有可用派遣任务'}};
|
||||
}
|
||||
let usedHeroes = [];
|
||||
const tasksCode = [];
|
||||
curTasks.forEach(task => {
|
||||
usedHeroes = usedHeroes.concat(task.heroes);
|
||||
tasksCode.push(task.taskCode);
|
||||
});
|
||||
for (let task of msg.tasks) {
|
||||
if (task.heroes.length > TOWER_TASK_CONST.MAX_HEROES_NUM) {
|
||||
return { code: 201, data: {msg: '一个任务最多派遣三个武将'}};
|
||||
}
|
||||
if (usedHeroes.length > 0) {
|
||||
let used = false;
|
||||
task.heroes.forEach(hid => {
|
||||
if (usedHeroes.indexOf(hid) !== -1) {
|
||||
used = true;
|
||||
}
|
||||
})
|
||||
if (used) {
|
||||
return { code: 201, data: {msg: '武将已经派遣到其他任务'}};
|
||||
}
|
||||
}
|
||||
if (tasksCode.indexOf(task.taskCode) === -1) {
|
||||
return { code: 201, data: {msg: '未找到此任务编号'}};
|
||||
}
|
||||
}
|
||||
const curTime = new Date();
|
||||
const recs = await TowerTaskRecModel.sendHeroes(roleId, msg.batchCode, msg.tasks, curTime);
|
||||
if (!recs || recs.length === 0) {
|
||||
return { code: 201, data: {msg: '任务更新失败,请检查任务编号'}};
|
||||
}
|
||||
return {
|
||||
code: 200,
|
||||
data: {
|
||||
msg: '派遣成功',
|
||||
tasks: recs
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
async settleTask(msg: {batchCode: string, taskCode: string}, session: BackendSession) {
|
||||
let roleId = session.get('roleId');
|
||||
let roleName = session.get('roleName');
|
||||
|
||||
let allFlag = !msg.taskCode;
|
||||
|
||||
const curTime = new Date();
|
||||
const curTasks = await TowerTaskRecModel.getCurTasks(roleId);
|
||||
if (!curTasks || curTasks.length == 0) {
|
||||
return { code: 201, data: {msg: '没有可用派遣任务'}};
|
||||
}
|
||||
const compTasks = [];
|
||||
let goods = [];
|
||||
for (let task of curTasks) {
|
||||
if (task.batchCode !== msg.batchCode) {
|
||||
return { code: 201, data: {msg: '派遣编码错误'}};
|
||||
}
|
||||
if ((allFlag || task.taskCode === msg.taskCode) && task.status === 1) {
|
||||
let {completeTime, reward, bonusCondition, bonus} = getTaskById(task.taskId);
|
||||
if (task.sendTime && task.sendTime.getTime() + completeTime * 1000 < curTime.getTime()) {
|
||||
compTasks.push(task.taskCode);
|
||||
const rewardGoods = await handleFixedReward(roleId, roleName, reward, 1);
|
||||
goods = goods.concat(rewardGoods);
|
||||
if(bonusCondition) {
|
||||
const res = checkTaskConditions(roleId, task.heroes, bonusCondition);
|
||||
const bonusGoods = await handleFixedReward(roleId, roleName, bonus, 1);
|
||||
goods = goods.concat(bonusGoods);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
await TowerTaskRecModel.finishTask(msg.batchCode, compTasks);
|
||||
return {
|
||||
code: 200,
|
||||
data: {
|
||||
msg: '成功',
|
||||
compTasks, goods
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user