55 lines
2.3 KiB
TypeScript
55 lines
2.3 KiB
TypeScript
import {Application, BackendSession} from 'pinus';
|
|
const _ = require('underscore');
|
|
import { gameData } from '../../../pubUtils/data';
|
|
import { checkPvp, initPvpInfo, refreshEnemies, getEnemies, } from '../../../services/pvpService';
|
|
import { RoleModel, RoleType } from '../../../db/Role';
|
|
import { STATUS } from '../../../consts/statusCode';
|
|
import { resResult } from '../../../pubUtils/util';
|
|
import { SystemConfigModel } from '../../../db/SystemConfig'
|
|
|
|
import { PvpDefenseModel } from '../../../db/PvpDefense';
|
|
export default function(app: Application) {
|
|
return new PvpHandler(app);
|
|
}
|
|
|
|
export class PvpHandler {
|
|
constructor(private app: Application) {
|
|
}
|
|
|
|
async test(msg: {}, session: BackendSession) {
|
|
let roleId = session.get('roleId');
|
|
let role = await RoleModel.findByRoleId(roleId);
|
|
const result = await initPvpInfo(role);
|
|
return resResult(STATUS.SUCCESS, {result});
|
|
}
|
|
|
|
async getData (msg: {}, session: BackendSession) {
|
|
let roleId = session.get('roleId');
|
|
let {heroes, score, pLv, winStreakNum, oppPlayers: oppPlayerInfos, refOppCnt, challengeCnt, challengeRefTime, receivedBox, hisScore, heroScores, seasonNum: playerSeaSonNum} = await PvpDefenseModel.findByRoleIdIncludeAll(roleId);
|
|
let oppPlayers = getEnemies(oppPlayerInfos, winStreakNum);
|
|
let {warId, seasonNum, seasonEndTime} = await SystemConfigModel.findSystemConfig();
|
|
if (playerSeaSonNum !== seasonNum) {
|
|
//TODO去结算
|
|
}
|
|
let myRank = 999;//TODO去redis中获取
|
|
let data = {warId, seasonNum, seasonEndTime, myRank, oppPlayers, heroes, score, pLv, winStreakNum, refOppCnt, challengeCnt, challengeRefTime, receivedBox, hisScore, heroScores}
|
|
return resResult(STATUS.SUCCESS, { data: data });
|
|
}
|
|
|
|
|
|
// TODO 刷新
|
|
async refreshOppPlayer (msg: {}, session: BackendSession) {
|
|
let roleId = session.get('roleId');
|
|
|
|
let pvpDefense = await PvpDefenseModel.findByRoleIdIncludeAll(roleId);
|
|
|
|
let role = <RoleType>pvpDefense.role;
|
|
let oppPlayers = await refreshEnemies(role, pvpDefense.score, pvpDefense.pLv);
|
|
|
|
pvpDefense = await PvpDefenseModel.updateInfoAndInclude(roleId, { oppPlayers });
|
|
let result = getEnemies(pvpDefense.oppPlayers, pvpDefense.winStreakNum);
|
|
|
|
return resResult(STATUS.SUCCESS, { data: result });
|
|
}
|
|
}
|