巅峰演武:赛季优化修改
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
import { Application, BackendSession, pinus, HandlerService, } from 'pinus';
|
||||
import { findIndex } from 'underscore';
|
||||
import { gameData, getPvpBoxBySeasonNumAndIndex } from '../../../pubUtils/data';
|
||||
import { refreshEnemies, getEnemies, refChallengeCnt, generPVPOppRecInfo, generMyRecInfo, sendLastSeasonRewardIfNotSent, refreshRefOppCnt, generPvpLineupCe, calLineupScore } from '../../../services/pvpService';
|
||||
import { refreshEnemies, getEnemies, refChallengeCnt, generPVPOppRecInfo, generMyRecInfo, sendLastSeasonRewardIfNotSent, refreshRefOppCnt, generPvpLineupCe, calLineupScore, checkPvpSeasonIsStart, checkPvpSeasonIsSummit } from '../../../services/pvpService';
|
||||
import { RoleModel, RoleType } from '../../../db/Role';
|
||||
import { STATUS } from '../../../consts/statusCode';
|
||||
import { resResult, genCode, checkRoleIsRobot, robotIdComBack } from '../../../pubUtils/util';
|
||||
@@ -10,7 +10,7 @@ import { PvpDefenseModel, pvpUpdateInter } from '../../../db/PvpDefense';
|
||||
import { PvpSeasonResultModel } from '../../../db/PvpSeasonResult';
|
||||
import { Rank } from '../../../services/rankService';
|
||||
import { checkTask, checkTaskInPvpEnd } from '../../../services/task/taskService';
|
||||
import { Attack, Defense, DefenseHero, PvpDataReturn } from '../../../domain/battleField/pvp';
|
||||
import { Attack, Defense, DefenseHero, PvpDataReturn, pvpSaveDataReturn } from '../../../domain/battleField/pvp';
|
||||
import { DEBUG_MAGIC_WORD, FIGURE_UNLOCK_CONDITION, ITEM_CHANGE_REASON, LINEUP_NUM, REDIS_KEY, TASK_TYPE } from '../../../consts';
|
||||
import { PVP } from '../../../pubUtils/dicParam';
|
||||
import { addItems, getGoldObject, handleCost, unlockFigure } from '../../../services/role/rewardService';
|
||||
@@ -22,6 +22,8 @@ import { PvpRecordModel } from '../../../db/PvpRecord';
|
||||
import { pvpEndParamInter } from '../../../pubUtils/interface';
|
||||
import { getSeconds, nowSeconds } from '../../../pubUtils/timeUtil';
|
||||
import { PlayerDetail, PlayerDetailHero } from '../../../domain/battleField/guild';
|
||||
import { PvpSaveDataModel } from '../../../db/PvpSaveData';
|
||||
import { PVPConfigModel } from '../../../db/PvpConfig';
|
||||
|
||||
export default function (app: Application) {
|
||||
new HandlerService(app, {});
|
||||
@@ -44,7 +46,9 @@ export class PvpHandler {
|
||||
// 如果没有发过,将上赛季的奖励发下
|
||||
pvpDefense = await sendLastSeasonRewardIfNotSent(pvpDefense);
|
||||
let seasonNum: number = this.app.get('pvpSeasonNum');
|
||||
let seasonStartTime: number = this.app.get('pvpSeasonStartTime');
|
||||
let seasonEndTime: number = this.app.get('pvpSeasonEndTime');
|
||||
let seasonRewardTime: number = this.app.get('pvpSeasonRewardTime');
|
||||
|
||||
let update: pvpUpdateInter = { };
|
||||
let result = new PvpDataReturn(); // 返回对象
|
||||
@@ -68,17 +72,16 @@ export class PvpHandler {
|
||||
pvpDefense = await PvpDefenseModel.updateInfoAndInclude(roleId, update);
|
||||
}
|
||||
|
||||
result.setPvpConfig(seasonNum, seasonEndTime);
|
||||
result.setPvpConfig(seasonNum, seasonStartTime, seasonEndTime, seasonRewardTime);
|
||||
result.setPvpDefense(pvpDefense);
|
||||
result.calHasSaveDefense();
|
||||
|
||||
let oppPlayersReturn = await getEnemies(pvpDefense.oppPlayers||[], pvpDefense.winStreakNum);
|
||||
result.setOppPlayers(oppPlayersReturn);
|
||||
// 赛季结算
|
||||
let pvpSeasonResult = await PvpSeasonResultModel.getPvpSeasonResult(roleId);
|
||||
if (!!pvpSeasonResult && !!pvpSeasonResult.show && pvpDefense.seasonNum == seasonNum) {
|
||||
if (!!pvpSeasonResult && !!pvpSeasonResult.show) {
|
||||
result.setPvpSeasonResult(pvpSeasonResult);
|
||||
result.setIsFirstEntry(true);
|
||||
update.isFirstEntry = false;
|
||||
await PvpSeasonResultModel.setShow(roleId);
|
||||
}
|
||||
// 拍卖
|
||||
@@ -153,6 +156,9 @@ export class PvpHandler {
|
||||
if (!warInfo) {
|
||||
return resResult(STATUS.BATTLE_MISS_INFO);
|
||||
}
|
||||
if(!checkPvpSeasonIsStart()) {
|
||||
return resResult(STATUS.PVP_SEASON_NOT_OPEN);
|
||||
}
|
||||
|
||||
let pvpDefense = await PvpDefenseModel.findByRoleId(roleId);
|
||||
if (!pvpDefense) return resResult(STATUS.PVP_NOT_OPEN);
|
||||
@@ -375,6 +381,30 @@ export class PvpHandler {
|
||||
return resResult(STATUS.SUCCESS, pick(result, ['attack', 'oppPlayers', 'buyAttackCnt', 'setAttackCnt', 'challengeCnt', 'challengeRefTime']));
|
||||
}
|
||||
|
||||
// 获取存档列表
|
||||
async getSaveData(msg: {}, session: BackendSession) {
|
||||
let roleId = session.get('roleId');
|
||||
let pvpDefense = await PvpDefenseModel.findByRoleId(roleId);
|
||||
if(!pvpDefense) return resResult(STATUS.PVP_NOT_OPEN);
|
||||
|
||||
let pvpConfig = await PVPConfigModel.findCurPVPConfig();
|
||||
if(!pvpConfig) return resResult(STATUS.PVP_SEASON_NOT_OPEN);
|
||||
|
||||
let saveDatas = await PvpSaveDataModel.findByRoleId(roleId);
|
||||
|
||||
let list: pvpSaveDataReturn[] = [];
|
||||
for(let warId of (pvpConfig.warIds||[])) {
|
||||
let data = new pvpSaveDataReturn(warId);
|
||||
let curSaveData = saveDatas.find(cur => cur.warId == warId);
|
||||
data.setUserSaveData(curSaveData);
|
||||
if(pvpDefense.defense?.warId == warId) {
|
||||
data.setAsUsing();
|
||||
}
|
||||
list.push(data);
|
||||
}
|
||||
return resResult(STATUS.SUCCESS, { list });
|
||||
}
|
||||
|
||||
//3. 保存防守阵容
|
||||
async saveDefense(msg: { heroes: { actorId: number, dataId: number, order: number, ai: number }[], warId: number, buff: number }, session: BackendSession) {
|
||||
let { heroes, warId, buff } = msg;
|
||||
@@ -382,10 +412,14 @@ export class PvpHandler {
|
||||
if (heroes.length > LINEUP_NUM || heroes.length <= 0) {
|
||||
return resResult(STATUS.WRONG_PARMS);
|
||||
}
|
||||
if(checkPvpSeasonIsSummit()) {
|
||||
return resResult(STATUS.PVP_CAN_NOT_SAVE_DEFENSE);
|
||||
}
|
||||
|
||||
let pvpDefense = await PvpDefenseModel.findByRoleId(roleId);
|
||||
if(!pvpDefense) return resResult(STATUS.PVP_NOT_OPEN);
|
||||
// 刷新次数
|
||||
let seasonNum: number = this.app.get('pvpSeasonNum');
|
||||
let seasonEndTime: number = this.app.get('pvpSeasonEndTime');
|
||||
let refChallengeObj = await refChallengeCnt(pvpDefense.challengeCnt, pvpDefense.challengeRefTime, seasonEndTime, roleId, session.get('vipStartTime'));
|
||||
// 更新防守阵容
|
||||
@@ -417,8 +451,8 @@ export class PvpHandler {
|
||||
});
|
||||
let defense = new Defense(defenseHeroes, scores, warId, buff);
|
||||
let lineupCe = await generPvpLineupCe(roleId, pvpDefense.lineupCe, pvpDefense.attack?.heroes??[], defense.heroes, dbHeroes);
|
||||
|
||||
pvpDefense = await PvpDefenseModel.updateInfoAndInclude(roleId, { ...refChallengeObj, defense, lineupCe });
|
||||
await PvpSaveDataModel.createSaveData(roleId, warId, buff, defenseHeroes);
|
||||
pvpDefense = await PvpDefenseModel.updateInfoAndInclude(roleId, { ...refChallengeObj, defense, lineupCe, hasDefense: true, seasonNum });
|
||||
// 返回
|
||||
let result = new PvpDataReturn();
|
||||
result.setPvpDefense(pvpDefense);
|
||||
@@ -584,10 +618,8 @@ export class PvpHandler {
|
||||
return resResult(STATUS.SUCCESS, { score, hisScore, heroScores });
|
||||
}
|
||||
|
||||
async debugPvpSeasonResetTime(msg: { day: number }, session: BackendSession) {
|
||||
let { day: minute } = msg;
|
||||
let { seasonNum, seasonEndTime } = await pinus.app.rpc.systimer.systimerRemote.resetPvpSeasonTime.toServer('systimer-server-1', minute);
|
||||
return resResult(STATUS.SUCCESS, { seasonNum, seasonEndTime });
|
||||
async debugPvpSeasonResetTime(msg: {}, session: BackendSession) {
|
||||
return resResult(STATUS.DEBUG_FUNCTION_ERR);
|
||||
}
|
||||
|
||||
async debugAddChallengeCnt(msg: { challengeCnt: number }, session: BackendSession) {
|
||||
|
||||
Reference in New Issue
Block a user