添加查看详细武将接口

This commit is contained in:
luying
2021-01-08 15:29:25 +08:00
parent b9dd5f3946
commit 099026869a
16 changed files with 446 additions and 345 deletions

View File

@@ -1,14 +1,14 @@
import {Application, BackendSession} from 'pinus';
const _ = require('underscore');
import { gameData } from '../../../pubUtils/data';
import { checkPvp, initPvpInfo, refreshEnemies, getEnemies, getPlusScore, getLvByScore, defaultHeroes} from '../../../services/pvpService';
import { checkPvp, initPvpInfo, refreshEnemies, getEnemies, getPlusScore, getLvByScore, defaultHeroes, checkRoleIsRobot} from '../../../services/pvpService';
import { RoleModel, RoleType } from '../../../db/Role';
import { STATUS } from '../../../consts/statusCode';
import { resResult, reduceCe, genCode } from '../../../pubUtils/util';
import { SystemConfigModel } from '../../../db/SystemConfig'
import { PvpDefenseModel, PvpDefenseType, OppPlayers } from '../../../db/PvpDefense';
import { oppHeroesDefenseInter, pvpEndParamInter, RankParam } from '../../../pubUtils/interface';
import { oppHeroesDefenseInter, pvpEndParamInter, RankParam, PlayerDetail, PlayerDetailHero } from '../../../pubUtils/interface';
import { PVP_HERO_POS, REDIS_KEY } from '../../../consts';
import { HeroType, HeroModel } from '../../../db/Hero';
@@ -359,4 +359,64 @@ export class PvpHandler {
return resResult(STATUS.SUCCESS, { ranks: ranks.slice(0, 100), myRank });
}
async getPlayerDetail(msg: { roleId: string }, session: BackendSession) {
let roleId = session.get('roleId');
let { roleId: oppoRoleId } = msg;
let isRobot = checkRoleIsRobot(oppoRoleId);
let result: PlayerDetail;
if(isRobot) { // 如果是机器人从自己的pvpDefense中寻找
let role = await RoleModel.findByRoleId(roleId);
let pvpDefense = await PvpDefenseModel.findByRoleId(roleId);
let { oppPlayers } = pvpDefense;
let curOpp = oppPlayers.find(cur => cur.roleId == oppoRoleId);
if(!curOpp) return resResult(STATUS.PVP_ROLE_NOT_FOUND);
let heroes = new Array<PlayerDetailHero>();
let { robot } = curOpp;
let { warId } = robot;
let dicWarJson = gameData.warJson.get(warId);
for(let json of dicWarJson) {
const { actorId, relation } = json;
if(relation == 2 && actorId > 0) { // 默认格子
let dicHero = gameData.hero.get(actorId);
heroes.push({
actorId,
star: dicHero.initialStars,
colorStar: 0,
quality: dicHero.quality,
score: 0,
lv: role.lv
});
}
}
result = new PlayerDetail({...robot, lv: role.lv, heroes})
} else { // 查询对方pvpDefense
let pvpDefense = await PvpDefenseModel.findByRoleId(oppoRoleId);
let dbHeroes = await HeroModel.findByRole(oppoRoleId);
let role = await RoleModel.findByRoleId(oppoRoleId);
let heroes = new Array<PlayerDetailHero>();
for(let {hid, lv, star, colorStar, quality } of dbHeroes) {
let heroScore = pvpDefense.heroScores.find(cur => cur.hid == hid);
heroes.push({
actorId: hid, lv, star, colorStar, quality,
score: heroScore?heroScore.score: 0
});
}
heroes.sort((a, b) => b.score - a.score);
result = new PlayerDetail({...role, heroes});
}
return resResult(STATUS.SUCCESS, result);
}
}