From 1df01334c914faf19fdf0d97e7808402a225081f Mon Sep 17 00:00:00 2001 From: liangtongchuan Date: Tue, 26 Jan 2021 14:18:43 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=BB=E5=AE=9D=EF=BC=9A=E5=8A=A0=E5=85=A5?= =?UTF-8?q?=E8=B6=85=E6=97=B6=E6=A0=87=E8=AF=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../servers/battle/handler/comBattleHandler.ts | 15 +++++++++------ shared/db/ComBattleTeam.ts | 8 ++++++-- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/game-server/app/servers/battle/handler/comBattleHandler.ts b/game-server/app/servers/battle/handler/comBattleHandler.ts index ce02d5db1..d31cc6c2d 100644 --- a/game-server/app/servers/battle/handler/comBattleHandler.ts +++ b/game-server/app/servers/battle/handler/comBattleHandler.ts @@ -56,6 +56,8 @@ class ComTeam { roleCnt: number; // 藏宝图等级所处范围,用来匹配 lvRange: number; + // 队伍是否开放加入 + timeout: boolean; constructor(teamCode: string, pub: boolean, blueprtId: number, status: number, capId: string, ceLimit: number, bossHp: number, quality: number, bossHpArr:Array ) { this.teamCode = teamCode; this.pub = pub; @@ -69,6 +71,7 @@ class ComTeam { this.bossHpArr = bossHpArr; this.curRnd = 0; this.roleCnt = 1; + this.timeout = false; let { lvLimited } = getGoodById(blueprtId); this.lvRange = comBtlRangeByLv(lvLimited); } @@ -542,9 +545,9 @@ export class ComBattleHandler { clearRobotHurtTimer(teamStatus, this.robotHurtTimer); let channelService = thiz.app.get('channelService'); let channel = channelService.getChannel(teamCode, false); - let team = await ComBattleTeamModel.syncTeamData({teamCode, status: COM_TEAM_STATUS.LOOSE, roleStatus: teamStatus.roleStatus, bossHpArr: teamStatus.bossHpArr}); + let team = await ComBattleTeamModel.syncTeamData({teamCode, status: COM_TEAM_STATUS.LOOSE, roleStatus: teamStatus.roleStatus, bossHpArr: teamStatus.bossHpArr}, true); if (!team) return resResult(STATUS.COM_BATTLE_RESULT_ERR); - channel.pushMessage('onTeamComplete', resResult(STATUS.SUCCESS, {teamCode, result: false})); + channel.pushMessage('onTeamComplete', resResult(STATUS.SUCCESS, {teamCode, result: false, timeout: true})); thiz.teamMap.delete(teamCode); } }, COM_BTL_CONST.BTL_TIME_LMT); @@ -702,16 +705,16 @@ export class ComBattleHandler { async getComBtlStatus(msg: {teamCode: string}, session: BackendSession) { let { teamCode } = msg; - let roleStatus, status, bossHpArr; + let roleStatus, status, bossHpArr, timeout; let memTeam = this.teamMap.get(teamCode); if (memTeam) { - ({ roleStatus, status, bossHpArr } = memTeam); + ({ roleStatus, status, bossHpArr, timeout } = memTeam); } else { let dbTeam = await ComBattleTeamModel.getTeamByCode(teamCode); if (!dbTeam) return resResult(STATUS.COM_BATTLE_TEAM_INVALID); - ({ roleStatus, status, bossHpArr } = dbTeam); + ({ roleStatus, status, bossHpArr, timeout } = dbTeam); } - return resResult(STATUS.SUCCESS, { teamInfo: {status, teamCode, roleStatus, bossHpArr} }); + return resResult(STATUS.SUCCESS, { teamInfo: {status, teamCode, roleStatus, bossHpArr, timeout} }); } /** diff --git a/shared/db/ComBattleTeam.ts b/shared/db/ComBattleTeam.ts index 7c1aee80d..62480fba3 100644 --- a/shared/db/ComBattleTeam.ts +++ b/shared/db/ComBattleTeam.ts @@ -129,6 +129,10 @@ export default class ComBattleTeam extends BaseModel { @prop({ required: false, type: BossHp, default: [] }) bossHpArr: Array; + // 队伍是否开放加入 + @prop({ required: true, default: false }) + timeout: boolean; + public static async createTeam(teamData: {teamCode: string, roleIds: Array, pub: boolean, blueprtId: number, quality: number, status: number, roleStatus: Array, capId: string, ceLimit: number}, lean = true) { const team: ComBattleTeamType = await ComBattleTeamModel.findOneAndUpdate({ teamCode: teamData.teamCode }, {$set :{...teamData, roleCnt: teamData.roleIds.length}}, {upsert: true, new: true}).lean(lean); return team; @@ -169,9 +173,9 @@ export default class ComBattleTeam extends BaseModel { return team; } - public static async syncTeamData(teamData: {teamCode: string, status: number, roleStatus: Array, bossHpArr: Array}, lean = true) { + public static async syncTeamData(teamData: {teamCode: string, status: number, roleStatus: Array, bossHpArr: Array}, timeout = false, lean = true) { console.log('syncTeamData bossHpArr: ', teamData.bossHpArr); - const team: ComBattleTeamType = await ComBattleTeamModel.findOneAndUpdate({ teamCode: teamData.teamCode }, {$set :{...teamData, roleCnt: teamData.roleStatus.length}}, {new: true}).lean(lean); + const team: ComBattleTeamType = await ComBattleTeamModel.findOneAndUpdate({ teamCode: teamData.teamCode }, {$set :{...teamData, roleCnt: teamData.roleStatus.length, timeout}}, {new: true}).lean(lean); return team; }