fix pvp刷新对手时保存数据
This commit is contained in:
@@ -1,26 +1,27 @@
|
||||
import {Application, BackendSession, pinus} from 'pinus';
|
||||
import { uniq, findWhere, findIndex } from 'underscore';
|
||||
import { gameData, getPvpBoxs } from '../../../pubUtils/data';
|
||||
import { refreshEnemies, getEnemies, getLvByScore, defaultHeroes, comsumeChallengeCnt, refresh, findPvpDefByRoleId, checkRoleIsRobot, getRefOppCnt, findPvpDefAllByRoleId, generPVPOppRecInfo, generMyRecInfo, getRobotLineup, getPlayerLineup } from '../../../services/pvpService';
|
||||
import { refreshEnemies, getEnemies, getLvByScore, defaultHeroes, comsumeChallengeCnt, refresh, findPvpDefByRoleId, checkRoleIsRobot, getRefOppCnt, findPvpDefAllByRoleId, generPVPOppRecInfo, generMyRecInfo } from '../../../services/pvpService';
|
||||
import { RoleModel, RoleType } from '../../../db/Role';
|
||||
import { STATUS } from '../../../consts/statusCode';
|
||||
import { resResult, genCode } from '../../../pubUtils/util';
|
||||
import { SystemConfigModel } from '../../../db/SystemConfig'
|
||||
|
||||
import { PvpDefenseModel, OppPlayers } from '../../../db/PvpDefense';
|
||||
import { oppHeroesDefenseInter, pvpEndParamInter, RankParam, PlayerDetail, PlayerDetailHero } from '../../../pubUtils/interface';
|
||||
import { pvpEndParamInter, RankParam, PlayerDetail, PlayerDetailHero } from '../../../pubUtils/interface';
|
||||
import { PVP_HERO_POS, REDIS_KEY } from '../../../consts';
|
||||
import { PVP } from '../../../pubUtils/dicParam';
|
||||
import { addItems } from '../../../services/rewardService';
|
||||
import { HeroModel } from '../../../db/Hero';
|
||||
import { checkBattleHeroesByHid } from '../../../services/normalBattleService';
|
||||
import { BattleRecordModel } from '../../../db/BattleRecord';
|
||||
import { PvpRecordModel, HeroesRecord } from '../../../db/PvpRecord';
|
||||
import { PvpRecordModel } from '../../../db/PvpRecord';
|
||||
import { existsRank, initRank, getRank, setRank, getMyRank } from '../../../services/redisService';
|
||||
import { handleCost } from '../../../services/rewardService';
|
||||
import { nowSeconds } from '../../../pubUtils/timeUtil';
|
||||
import { setPvpSeasonResult, resetPvpWarId, resetPvpSeasonTime } from '../../../services/timeTaskService';
|
||||
import { PvpSeasonResultModel } from '../../../db/PvpSeasonResult';
|
||||
import { PvpHistoryOppModel, PvpHistoryOppType } from '../../../db/PvpHistoryOpp';
|
||||
|
||||
export default function(app: Application) {
|
||||
return new PvpHandler(app);
|
||||
}
|
||||
@@ -158,22 +159,13 @@ export class PvpHandler {
|
||||
let oppoRoleId = msg.roleId;
|
||||
let pvpDefense = await PvpDefenseModel.findByRoleIdIncludeAll(roleId);
|
||||
let { oppPlayers } = pvpDefense;
|
||||
let role = <RoleType>pvpDefense.role;
|
||||
|
||||
let curOpp = oppPlayers.find(cur => cur.roleId == oppoRoleId);
|
||||
if(!curOpp) return resResult(STATUS.PVP_ROLE_NOT_FOUND);
|
||||
|
||||
let system = await SystemConfigModel.findSystemConfig();
|
||||
let mapWarJson = gameData.warJson.get(system.warId);
|
||||
let { oppRoleId, heroes } = <PvpHistoryOppType>curOpp.oppDef;
|
||||
|
||||
let heroes = new Array<oppHeroesDefenseInter>();
|
||||
if(curOpp.isRobot) { // 机器人
|
||||
heroes = await getRobotLineup(mapWarJson, curOpp, role.topFiveCe, role.lv);
|
||||
} else { // 真人
|
||||
heroes = await getPlayerLineup(mapWarJson, curOpp);
|
||||
}
|
||||
|
||||
return resResult(STATUS.SUCCESS, { roleId: oppoRoleId, pos: curOpp.pos, heroes });
|
||||
return resResult(STATUS.SUCCESS, { roleId: oppRoleId, pos: curOpp.pos, heroes });
|
||||
}
|
||||
|
||||
// 开战
|
||||
@@ -287,6 +279,9 @@ export class PvpHandler {
|
||||
await setRank(REDIS_KEY.PVP_RANK, 0, roleId, pvpDefense.score, pvpDefense.updatedAt.getTime(), params);
|
||||
let myRank = await getMyRank(REDIS_KEY.PVP_RANK, 0, roleId);
|
||||
|
||||
// 对手记录更新
|
||||
await PvpHistoryOppModel.setStatus(roleId, oppRoleId, 1);
|
||||
|
||||
return resResult(STATUS.SUCCESS, {
|
||||
battleCode, isSuccess,
|
||||
score, pLv, myRank, hisScore,
|
||||
@@ -386,34 +381,17 @@ export class PvpHandler {
|
||||
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
|
||||
});
|
||||
}
|
||||
let pvpHistoryOpp = await PvpHistoryOppModel.findByRoleIdAndOppId(roleId, oppoRoleId);
|
||||
if(!pvpHistoryOpp) {
|
||||
return resResult(STATUS.PVP_ROLE_NOT_FOUND);
|
||||
}
|
||||
result = new PlayerDetail({...robot, lv: role.lv, heroes})
|
||||
|
||||
let heroes = pvpHistoryOpp.heroes.map(hero => {
|
||||
let newHero = new PlayerDetailHero();
|
||||
newHero.setPvpHeroInfo(hero);
|
||||
return newHero;
|
||||
})
|
||||
result = new PlayerDetail({...pvpHistoryOpp, roleId: pvpHistoryOpp.oppRoleId, heroes});
|
||||
} else { // 查询对方pvpDefense
|
||||
let pvpDefense = await PvpDefenseModel.findByRoleId(oppoRoleId);
|
||||
let dbHeroes = await HeroModel.findByRole(oppoRoleId);
|
||||
|
||||
Reference in New Issue
Block a user