pvp保存阵容
This commit is contained in:
@@ -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 } });
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user