feat(战场): 保存战阵连携顺序

This commit is contained in:
luying
2023-08-01 17:20:21 +08:00
parent 07bce370aa
commit f0ab9b0aeb
14 changed files with 102 additions and 33 deletions
@@ -47,7 +47,7 @@ export class GVGBattleHandler {
async getTeams(msg: {}, session: BackendSession) {
const roleId = session.get('roleId');
let { configId } = getGVGConfig();
const teams = await GVGTeamModel.findByRole(roleId, '-_id teamCode index head frame spine lineup confirmConfigId')
const teams = await GVGTeamModel.findByRole(roleId, '-_id teamCode index head frame spine lineup combo confirmConfigId')
return resResult(STATUS.SUCCESS, { teams: teams.map(team => new MyTeamSimpleInfo(team, configId)) });
}
@@ -64,7 +64,7 @@ export class GVGBattleHandler {
const serverId = session.get('serverId');
const roleName = session.get('roleName');
const guildCode = session.get('guildCode');
const { cityId, index, head, spine, frame, lineup } = msg;
const { cityId, index, head, spine, frame, lineup, combo } = msg;
let { configId, period } = getGVGPeriodData();
if (period != GVG_PERIOD.BATTLE) return resResult(STATUS.GVG_NOT_BATTLE_PERIOD);
@@ -79,7 +79,7 @@ export class GVGBattleHandler {
let groupKey = await getGroupKey(serverId);
let role = await RoleModel.findByRoleId(roleId, 'lv title');
let updateParam: SaveTeamUpdateParam = { index, head, spine, frame, roleName, serverId, leagueCode, leagueName, lv: role.lv, title: role.title }
let updateParam: SaveTeamUpdateParam = { index, head, spine, frame, roleName, serverId, leagueCode, leagueName, lv: role.lv, title: role.title, combo }
if(lineup) {
let hids: number[] = [];
for(let { actorId, subHid } of lineup) {
@@ -499,7 +499,7 @@ export class GVGBattleHandler {
teamObj.setTime(defenseTeam.teamCode, defenseTeam);
let heroes = getOppHeroes(warId, defenseTeam.isRobot, defenseTeam.lineup)
return resResult(STATUS.SUCCESS, { battleCode: battleRecord.battleCode, warId, isRobot: defenseTeam.isRobot, heroes, curTeam: new MyTeamInfo(attackTeam), oppTeam: new MyTeamInfo(defenseTeam) });
return resResult(STATUS.SUCCESS, { battleCode: battleRecord.battleCode, warId, isRobot: defenseTeam.isRobot, heroes, combo: defenseTeam.combo, curTeam: new MyTeamInfo(attackTeam), oppTeam: new MyTeamInfo(defenseTeam) });
}
// 队伍停止攻击
@@ -29,6 +29,7 @@ import { Rank } from "../../../services/rankService";
import { getAllServerName } from "../../../services/redisService";
import { CheckMeterial } from "../../../services/role/checkMaterial";
import { checkGVGTask } from "../../../services/task/taskService";
import { Combo } from "../../../domain/battleField/pvp";
export default function (app: Application) {
new HandlerService(app, {});
@@ -68,7 +69,7 @@ export class GVGProduceHandler {
let myVestigeRank = await getMyVestigeRank(configId, groupKey, vestigeId, roleId, myLeague);
if(!myVestigeRank) return resResult(STATUS.GVG_LEAGUE_NOT_EXIST);
let { rank, lineup, oppRanks, refreshCnt } = myVestigeRank;
let { rank, lineup, oppRanks, refreshCnt, combo } = myVestigeRank;
let lineupCe = lineup.reduce((pre, cur) => pre + cur.ce, 0);
let oppPlayers = await getOppPlayerByRanks(serverId, groupKey, vestigeId, oppRanks);
@@ -78,7 +79,7 @@ export class GVGProduceHandler {
vestigeId,
myRank: rank,
score: dicRankMap?.get(rank)?.score||0,
lineup, lineupCe,
lineup, lineupCe, combo,
oppPlayers,
refreshCnt,
usedHeroes,
@@ -87,11 +88,11 @@ export class GVGProduceHandler {
}
// 编辑阵容
async saveLineup(msg: { vestigeId: number, lineup: [{ actorId: number, dataId: number, order: number, correspondingVar: number, subHid: number }] }, session: BackendSession) {
async saveLineup(msg: { vestigeId: number, lineup: [{ actorId: number, dataId: number, order: number, correspondingVar: number, subHid: number }], combo: Combo[] }, session: BackendSession) {
const roleId = session.get('roleId');
const serverId = session.get('serverId');
const { vestigeId, lineup: heroes } = msg;
const { vestigeId, lineup: heroes, combo } = msg;
if(!await checkVestige(serverId, vestigeId)) {
return resResult(STATUS.GVG_VESTIGE_ERR);
@@ -115,11 +116,12 @@ export class GVGProduceHandler {
let curHero = dbHeroes.find(cur => cur.hid == hero.actorId);
return { actorId: curHero.hid, dataId: hero.dataId, order: hero.order, subHid: hero.subHid, correspondingVar: hero.correspondingVar, ce: curHero.ce }
});
let vestigeRank = await GVGVestigeRankModel.updateByRoleId(vestigeId, roleId, { lineup, hasDefense: true });
let vestigeRank = await GVGVestigeRankModel.updateByRoleId(vestigeId, roleId, { lineup, combo, hasDefense: true });
return resResult(STATUS.SUCCESS, {
vestigeId,
lineup: vestigeRank.lineup,
combo: vestigeRank.combo,
lineupCe: vestigeRank.lineup.reduce((pre, cur) => pre + cur.ce, 0),
});
}
@@ -296,12 +298,12 @@ export class GVGProduceHandler {
}
// 布完阵开始挑战
async checkBattle(msg: { battleCode: string, heroes: { actorId: number, dataId: number, order: number, subHid: number }[] }, session: BackendSession) {
async checkBattle(msg: { battleCode: string, heroes: { actorId: number, dataId: number, order: number, subHid: number }[], combo: Combo[] }, session: BackendSession) {
const roleId = session.get('roleId');
const roleName = session.get('roleName');
const serverId = session.get('serverId');
const { battleCode, heroes } = msg;
const { battleCode, heroes, combo } = msg;
let rec = await GVGVestigeRecModel.findByBattleCode(battleCode);
if(!rec || rec.attackRoleId != roleId) return resResult(STATUS.GVG_VESTIGE_REC_NOT_FOUND);
@@ -322,7 +324,7 @@ export class GVGProduceHandler {
if(!lock) return resResult(STATUS.GVG_VESTIGE_CHECK_BATTLE_STATUS_ERR);
// 向vestigerec保存阵容
const info = await generateAttackHeroInfo(heroes, dbHeroes);
const info = await generateAttackHeroInfo(heroes, dbHeroes, combo);
rec = await GVGVestigeRecModel.startBattle(battleCode, info.heroes, info.ce);
// 更新battleRecord