pvp结算保存战报
This commit is contained in:
@@ -9,12 +9,13 @@ import { SystemConfigModel } from '../../../db/SystemConfig'
|
||||
|
||||
import { PvpDefenseModel, PvpDefenseType, OppPlayers } from '../../../db/PvpDefense';
|
||||
import { oppHeroesDefenseInter, pvpEndParamInter } from '../../../pubUtils/interface';
|
||||
import { PVP_HERO_POS, ROBOT_NAME } from '../../../consts';
|
||||
|
||||
import { HeroType, HeroModel } 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';
|
||||
|
||||
import { PvpRecordModel, HeroesRecord } from '../../../db/PvpRecord';
|
||||
export default function(app: Application) {
|
||||
return new PvpHandler(app);
|
||||
}
|
||||
@@ -177,14 +178,13 @@ export class PvpHandler {
|
||||
return resResult(STATUS.BATTLE_STATUS_WRONG);
|
||||
}
|
||||
|
||||
let flag = 1; // 对比hero信息
|
||||
let { record: { heroes: dbHeroes, oppRoleId, pos } } = BattleRecord;
|
||||
|
||||
let flag = 1; // 对比hero信息
|
||||
for(let {hid} of myHeroes) {
|
||||
if(dbHeroes.indexOf(hid) == -1) flag = 0;
|
||||
}
|
||||
if(!flag) {
|
||||
return resResult(STATUS.BATTLE_INFO_VALIDATE_ERR);
|
||||
}
|
||||
if(!flag) return resResult(STATUS.BATTLE_INFO_VALIDATE_ERR);
|
||||
|
||||
// 更新军功
|
||||
let pvpDefense = await PvpDefenseModel.findByRoleId(roleId);
|
||||
@@ -196,8 +196,10 @@ export class PvpHandler {
|
||||
const dicOpp = gameData.pvpOpponent.get(pos);
|
||||
let plusScore = getPlusScore(winStreakNum);
|
||||
|
||||
let myHeroRecords = new Array<HeroesRecord>();
|
||||
let showHeroScores = new Array<{hid: number, addScore: number, plusScore: number, score: number}>();
|
||||
for(let { hid, damage, heal, hurt } of myHeroes) {
|
||||
let addSumScore = 0;
|
||||
for(let { hid, damage, heal, underDamage } of myHeroes) {
|
||||
let curHeroScore = heroScores.find(cur => cur.hid == hid);
|
||||
if(isSuccess) {
|
||||
if(!curHeroScore) {
|
||||
@@ -208,7 +210,7 @@ export class PvpHandler {
|
||||
} else {
|
||||
curHeroScore.score += dicOpp.score + plusScore;
|
||||
}
|
||||
score += dicOpp.score + plusScore;
|
||||
addSumScore += dicOpp.score + plusScore;
|
||||
showHeroScores.push({
|
||||
hid, addScore: dicOpp.score, plusScore, score: curHeroScore.score
|
||||
});
|
||||
@@ -219,7 +221,31 @@ export class PvpHandler {
|
||||
});
|
||||
winStreakNum = 0;
|
||||
}
|
||||
const myHero = await HeroModel.findByHidAndRole(hid, roleId, 'quality star colorStar lv');
|
||||
let { quality, star, colorStar, lv} = myHero;
|
||||
myHeroRecords.push({
|
||||
hid, quality, star, colorStar, lv, damage, heal, underDamage
|
||||
});
|
||||
}
|
||||
|
||||
let oppHeroRecords = new Array<HeroesRecord>();
|
||||
for(let { hid, damage, heal, underDamage } of myHeroes) {
|
||||
if(curOpp.isRobot) {
|
||||
let dicHero = gameData.hero.get(hid);
|
||||
let { quality, initialStars: star } = dicHero;
|
||||
oppHeroRecords.push({
|
||||
hid, quality, star, colorStar: 0, lv: 0, damage, heal, underDamage
|
||||
});
|
||||
} else {
|
||||
const myHero = await HeroModel.findByHidAndRole(hid, roleId, 'quality star colorStar lv');
|
||||
let { quality, star, colorStar, lv} = myHero;
|
||||
oppHeroRecords.push({
|
||||
hid, quality, star, colorStar, lv, damage, heal, underDamage
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
score += addSumScore;
|
||||
let pLv = getLvByScore(heroScores);
|
||||
|
||||
// 刷新对手
|
||||
@@ -235,7 +261,19 @@ export class PvpHandler {
|
||||
$set: { status: isSuccess?1:2 }
|
||||
}, true);
|
||||
|
||||
// TODO 记录战报
|
||||
let oppRole;
|
||||
if(curOpp.isRobot) {
|
||||
oppRole = { ...curOpp.robot, title: 1, topFiveCe: curOpp.robot.defCe};
|
||||
} else {
|
||||
oppRole = await RoleModel.findByRoleId(oppRoleId);
|
||||
}
|
||||
|
||||
// TODO 战报记录方法抽象
|
||||
await PvpRecordModel.createRec({roleId1: roleId, roleId2: oppRoleId, warId: BattleRecord.battleId, attackInfo: {
|
||||
roleId, roleName, lv: role.lv, sHid: role.sHid, headHid: role.headHid, title: role.title, ce: role.topFiveCe, heroes: myHeroRecords, isSuccess, score: isSuccess?addSumScore:0
|
||||
}, defenseInfo: {
|
||||
roleId: oppRole.roleId, roleName: oppRole.roleName, lv: oppRole.lv, sHid: oppRole.sHid, headHid: oppRole.headHid, title: oppRole.title, ce: oppRole.topFiveCe, heroes: myHeroRecords, isSuccess: !isSuccess, score: 0
|
||||
}})
|
||||
|
||||
return resResult(STATUS.SUCCESS, {
|
||||
battleCode, isSuccess,
|
||||
|
||||
Reference in New Issue
Block a user