✨ 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
@@ -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