Merge branch 'master' of gitlab.trgame.cn:zyztech/zyz_server

This commit is contained in:
mamengke01
2021-01-15 16:07:39 +08:00
6 changed files with 61 additions and 30 deletions
@@ -389,11 +389,17 @@ export class PvpHandler {
return resResult(STATUS.PVP_ROLE_NOT_FOUND);
}
let heroes = pvpHistoryOpp.heroes.map(hero => {
let heroes = new Array<PlayerDetailHero>();
for(let hero of pvpHistoryOpp.heroes) {
let newHero = new PlayerDetailHero();
newHero.setPvpHeroInfo(hero);
return newHero;
})
heroes.push(newHero);
}
for(let hero of pvpHistoryOpp.otherHeroes) {
let newHero = new PlayerDetailHero();
newHero.setPvpHeroInfo(hero);
heroes.push(newHero);
}
result = new PlayerDetail({...pvpHistoryOpp, roleId: pvpHistoryOpp.oppRoleId, heroes, rank: pvpHistoryOpp.rankLv});
} else { // 查询对方pvpDefense
let pvpDefense = await PvpDefenseModel.findByRoleId(oppoRoleId);
+28 -21
View File
@@ -13,7 +13,7 @@ import { setRank, getMyRank, getFieldByRank } from './redisService';
import { nowSeconds, checkTodayTime } from '../pubUtils/timeUtil';
import { HeroesRecord } from '../db/PvpRecord';
import { HeroModel, HeroType } from '../db/Hero';
import { CeAttrNumber, CeAttr, CeAttrRole, PvpEnemies, PvpHeroInfo } from '../db/generalField';
import { CeAttrNumber, CeAttr, CeAttrRole, PvpEnemies, PvpHeroInfo, PvpOtherHeroes } from '../db/generalField';
import { DicWarJson } from '../pubUtils/dictionary/DicWarJson';
import { findWhere, findIndex } from 'underscore';
import { pinus } from 'pinus';
@@ -195,28 +195,38 @@ async function matchPlayer(oppPlayers: OppPlayers[], mapWarJson: DicWarJson[], r
* @param roleId 自己的玩家id
* @param pos 刷新这个对手的位置
*/
async function generPlayerOppHis(result: PvpDefenseType, mapWarJson: DicWarJson[], roleId: string, pos: number) {
let heroScores = result.heroScores;
let role = <RoleType>result.role;
async function generPlayerOppHis(pvpdefense: PvpDefenseType, mapWarJson: DicWarJson[], roleId: string, pos: number) {
let { heroScores, heroes: defenseHeroes } = pvpdefense;
let role = <RoleType>pvpdefense.role;
let rankLv = await getMyRank(REDIS_KEY.PVP_RANK, 0, role.roleId);
let dbHeroes = await HeroModel.findByRole(role.roleId, [{field: 'ce', sortBy: -1}]);
let heroes = new Array<PvpEnemies>();
for(let warJson of mapWarJson) {
if(warJson.relation == 1) continue;
let h = result.heroes.find(cur => cur.dataId == warJson.dataId);
if(h && h.hero) {
let hs = heroScores.find(cur => cur.hid == h.actorId); // 这个武将的军功
let hero = <HeroType>h.hero;
let heroInfo = new PvpHeroInfo();
heroInfo.setHeroInfo(hero);
heroInfo.setOutIndex(h.order);
let attribute = getPlayerAttribute(hero.ceAttr, role.globalCeAttr);
heroInfo.setAttribute(attribute);
let enemy = new PvpEnemies(warJson, heroInfo, hs?hs.score: 0);
heroes.push(enemy);
let otherHeroes = new Array<PvpOtherHeroes>(); // 阵容外的所有武将信息
for(let dbHero of dbHeroes) {
let h = defenseHeroes.find(cur => cur.actorId == dbHero.hid); // 阵容里是否有这个武将
let hs = heroScores.find(cur => cur.hid == dbHero.hid); // 这个武将是否有这个得分
if(!!h) {
let warJson = mapWarJson.find(cur => cur.dataId == h.dataId);
if(warJson && warJson.relation == 2) {
let heroInfo = new PvpHeroInfo();
heroInfo.setHeroInfo(dbHero);
heroInfo.setOutIndex(h.order);
let attribute = getPlayerAttribute(dbHero.ceAttr, role.globalCeAttr);
heroInfo.setAttribute(attribute);
let enemy = new PvpEnemies(warJson, heroInfo, hs?hs.score: 0);
heroes.push(enemy);
}
} else {
let heroInfo = new PvpOtherHeroes(hs?hs.score: 0);
heroInfo.setHeroInfo(dbHero);
otherHeroes.push(heroInfo);
}
}
heroes.sort((a, b) => b.score - a.score);
otherHeroes.sort((a, b) => b.score - a.score);
let pvpHistoryOpp = await PvpHistoryOppModel.createPvpOpp({
...result, ...role, pos, rankLv, heroes, roleId, oppRoleId: makeRobotId(result.roleId)
...pvpdefense, ...role, pos, rankLv, heroes, otherHeroes, roleId, oppRoleId: makeRobotId(pvpdefense.roleId)
});
return pvpHistoryOpp;
}
@@ -248,9 +258,6 @@ async function matchRobot(oppPlayers: OppPlayers[], mapWarJson: DicWarJson[], ro
heroInfo.setAttribute(attribute);
let enemy = new PvpEnemies(warJson, heroInfo, 0);
heroes.push(enemy);
} else {
let enemy = new PvpEnemies(warJson, new PvpHeroInfo(), 0);
heroes.push(enemy);
}
}