寻宝:添加撤退

This commit is contained in:
luying
2022-10-08 16:43:58 +08:00
parent a2b309cc6d
commit 4a83442a54
3 changed files with 34 additions and 4 deletions

View File

@@ -1,5 +1,5 @@
import { ComBattleInvitation, MemComBtlTeam } from './../../../domain/battleField/ComBattleTeamField';
import { difference } from 'underscore';
import { difference, pick } from 'underscore';
/*
* @Author: 梁桐川
* @Date: 2020-11-30 15:05:48
@@ -560,6 +560,31 @@ export class ComBattleHandler {
return resResult(STATUS.SUCCESS, { battleGoods: goods, teamInfo: {status, teamCode, roleStatus, bossHpArr} });
}
async retreat(msg: {teamCode: string}, session: BackendSession) {
let roleId = session.get('roleId');
let sid = session.get('sid');
let { teamCode } = msg;
let teamStatus = this.teamMap.get(teamCode);
if (!teamStatus || !teamStatus.roleIds || teamStatus.roleIds.indexOf(roleId) === -1) {
checkTeamStatusAndSend(teamCode, roleId, sid);
return resResult(STATUS.SUCCESS);
}
if(teamStatus.roleStatus.length > 1) {
return resResult(STATUS.COM_BATTLE_RETREAT_ERR)
}
clearRobotHurtTimer(teamStatus, this.robotHurtTimer);
let team = await ComBattleTeamModel.syncTeamData({ teamCode, status: COM_TEAM_STATUS.LOOSE, roleStatus: teamStatus.roleStatus, bossHpArr: teamStatus.bossHpArr, endTime: Date.now() }, false, true);
if (!team) return resResult(STATUS.COM_BATTLE_RESULT_ERR);
sendMessageToTeam(teamCode, PUSH_ROUTE.TEAM_COMPLETE, { teamCode, result: false });
this.teamMap.delete(teamCode);
return resResult(STATUS.SUCCESS, { teamInfo: pick(team, ['status', 'teamCode', 'roleStatus', 'bossHpArr']) });
}
async getComBtlStatus(msg: {teamCode: string}, session: BackendSession) {
let { teamCode } = msg;
let roleStatus: RoleStatus[], status: number, bossHpArr: BossHp[], timeout: boolean, endTime = 0;

View File

@@ -157,6 +157,7 @@ export const STATUS = {
COM_BATTLE_IS_RUNNING: { code: 20637, simStr: '您有队伍正在进行中' },
COM_BATTLE_INVITE_LV_NOT_ENOUGH: { code: 20638, simStr: '对方队伍等级不足,无法邀请' },
COM_BATTLE_INVITE_CE_LIMIT: { code: 20639, simStr: '对方队伍战力不足,无法邀请' },
COM_BATTLE_RETREAT_ERR: { code: 20640, simStr: '队伍不止单人,不允许撤退' },
// 共斗藏宝图合成
COM_BLUEPRT_QUALITY_CANNOT_COMPOSE: { code: 20650, simStr: '该品质藏宝图不可合成' },
COM_BLUEPRT_COUNT_ERROR: { code: 20651, simStr: '材料数量不足' },

View File

@@ -196,10 +196,14 @@ export default class ComBattleTeam extends BaseModel {
@prop({ required: false, type: BossHp, default: [], _id: false })
bossHpArr: BossHp[];
// 队伍是否开放加入
// 是否超时
@prop({ required: true, default: false })
timeout: boolean;
// 是否撤退
@prop({ required: true, default: false })
retreat: boolean;
// 黑名单
blacklist: string[] = [];
@@ -272,9 +276,9 @@ export default class ComBattleTeam extends BaseModel {
return team;
}
public static async syncTeamData(teamData: {teamCode: string, status: number, roleStatus: RoleStatus[], bossHpArr: BossHp[], endTime?: number}, timeout = false, lean = true) {
public static async syncTeamData(teamData: {teamCode: string, status: number, roleStatus: RoleStatus[], bossHpArr: BossHp[], endTime?: number}, timeout = false, retreat = false) {
// console.log('syncTeamData bossHpArr: ', teamData.bossHpArr);
const team: ComBattleTeamType = await ComBattleTeamModel.findOneAndUpdate({ teamCode: teamData.teamCode }, {$set :{...teamData, roleCnt: teamData.roleStatus.length, timeout}}, {new: true}).lean(lean);
const team: ComBattleTeamType = await ComBattleTeamModel.findOneAndUpdate({ teamCode: teamData.teamCode }, {$set :{...teamData, roleCnt: teamData.roleStatus.length, timeout, retreat}}, {new: true}).lean();
return team;
}