pvp保存阵容

This commit is contained in:
mamengke01
2021-01-07 20:36:17 +08:00
parent 5bfac1723c
commit 2470f7582f
8 changed files with 119 additions and 36 deletions

View File

@@ -1,7 +1,7 @@
import {Application, BackendSession} from 'pinus';
const _ = require('underscore');
import { gameData } from '../../../pubUtils/data';
import { checkPvp, initPvpInfo, refreshEnemies, getEnemies, getPlusScore, getLvByScore, } from '../../../services/pvpService';
import { checkPvp, initPvpInfo, refreshEnemies, getEnemies, getPlusScore, getLvByScore, defaultHeroes} from '../../../services/pvpService';
import { RoleModel, RoleType } from '../../../db/Role';
import { STATUS } from '../../../consts/statusCode';
import { resResult, reduceCe, genCode } from '../../../pubUtils/util';
@@ -9,10 +9,12 @@ import { SystemConfigModel } from '../../../db/SystemConfig'
import { PvpDefenseModel, PvpDefenseType, OppPlayers } from '../../../db/PvpDefense';
import { oppHeroesDefenseInter, pvpEndParamInter } from '../../../pubUtils/interface';
import { HeroType } from '../../../db/Hero';
import { CeAttrNumber } from '../../../db/generalField';
import { checkBattleHeroesByHid } from '../../../services/normalBattleService';
import { BattleRecordModel } from '../../../db/BattleRecord';
import { HeroModel, HeroType } from '../../../db/Hero';
import { PVP_HERO_POS, ROBOT_NAME } from '../../../consts';
export default function(app: Application) {
return new PvpHandler(app);
}
@@ -242,4 +244,50 @@ export class PvpHandler {
oppPlayers: result
});
}
async saveDefense(msg: { heroes: Array<{actorId: number, dataId: number, order: number}>, isDefaultHero:boolean }, session: BackendSession) {
let {heroes, isDefaultHero} = msg;
let roleId = session.get('roleId');
if (heroes.length > 5) {
return resResult(STATUS.WRONG_PARMS);
}
heroes = _.uniq(heroes, function(item) {
return item.order;
});
let { heroes: defHeros } = await PvpDefenseModel.findByRoleId(roleId);
let defCe = 0;
if (!!isDefaultHero) {
let role = await RoleModel.findByRoleId(roleId);
let { resHeroes } = await defaultHeroes(role);
return resResult(STATUS.SUCCESS, { data: { heroes: resHeroes } });
} else {
for (let dataId = PVP_HERO_POS.START; dataId <= PVP_HERO_POS.END; dataId++) {
let index = _.findIndex(heroes, {dataId});
let defIndex = _.findIndex(defHeros, {dataId});
if (defIndex == -1) {
defIndex = defHeros.length;
defHeros.push({actorId:0, order:0,ce:0, hero:null,dataId});
}
if (index == -1) {
defHeros[defIndex].actorId = 0;
defHeros[defIndex].order = 0;
defHeros[defIndex].ce = 0;
defHeros[defIndex].hero = null;
defHeros[defIndex].dataId = dataId;
continue;
}
let hero = await HeroModel.findByHidAndRole(heroes[index].actorId, roleId);
if (!hero) {
continue;
}
defHeros[defIndex].actorId = heroes[index].actorId;
defHeros[defIndex].order = heroes[index].order;
defHeros[defIndex].ce = hero.ce;
defHeros[defIndex].hero = hero._id;
defCe += hero.ce;
}
let { heroes: resHeroes } = await PvpDefenseModel.updateInfo(roleId, {defCe, heroes: defHeros});
return resResult(STATUS.SUCCESS, { data: { heroes: resHeroes } });
}
}
}