fix pvp每天第一次登录页面刷新对手

This commit is contained in:
luying
2021-01-14 19:02:46 +08:00
parent 2e1dc29f4e
commit 942ab270b0
2 changed files with 22 additions and 9 deletions
+21 -8
View File
@@ -1,7 +1,7 @@
/** /**
* 体力系统 * 体力系统
*/ */
import { PvpDefenseModel, Heroes, OppPlayers, Robot, PvpDefenseType, HeroScores } from '../db/PvpDefense'; import { PvpDefenseModel, Heroes, OppPlayers, Robot, PvpDefenseType, HeroScores, pvpUpdateInter } from '../db/PvpDefense';
import { RoleType, RoleModel } from '../db/Role'; import { RoleType, RoleModel } from '../db/Role';
import { PVP_HERO_POS, ROBOT_NAME, REDIS_KEY, PVP_CONST } from '../consts'; import { PVP_HERO_POS, ROBOT_NAME, REDIS_KEY, PVP_CONST } from '../consts';
import { setPvpDefResult } from '../services/timeTaskService'; import { setPvpDefResult } from '../services/timeTaskService';
@@ -338,7 +338,7 @@ export async function findPvpDefByRoleId(roleId: string) {
return {pvpDefense: newPvpDefense, warId}; return {pvpDefense: newPvpDefense, warId};
} }
let {challengeCnt, challengeRefTime} = refresh(pvpDefense.challengeCnt, pvpDefense.challengeRefTime, pvpDefense.seasonEndTime); let {challengeCnt, challengeRefTime} = refresh(pvpDefense.challengeCnt, pvpDefense.challengeRefTime, pvpDefense.seasonEndTime);
let { refOppCnt, refOppTime } = getRefOppCnt(pvpDefense.refOppCnt, pvpDefense.refOppTime); // 刷新次数 let { refOppCnt, refOppTime, shouldRefOpp } = getRefOppCnt(pvpDefense.refOppCnt, pvpDefense.refOppTime); // 刷新次数
if (challengeCnt != pvpDefense.challengeCnt ||refOppCnt != pvpDefense.refOppCnt) { if (challengeCnt != pvpDefense.challengeCnt ||refOppCnt != pvpDefense.refOppCnt) {
await PvpDefenseModel.updateInfo( roleId, { challengeCnt, challengeRefTime, refOppCnt}); await PvpDefenseModel.updateInfo( roleId, { challengeCnt, challengeRefTime, refOppCnt});
pvpDefense.challengeCnt = challengeCnt; pvpDefense.challengeCnt = challengeCnt;
@@ -346,16 +346,18 @@ export async function findPvpDefByRoleId(roleId: string) {
pvpDefense.refOppCnt = refOppCnt; pvpDefense.refOppCnt = refOppCnt;
pvpDefense.refOppTime = refOppTime; pvpDefense.refOppTime = refOppTime;
} }
return {pvpDefense, warId}; return {pvpDefense, warId, shouldRefOpp};
} }
// 获取刷新对手次数及消耗 // 获取刷新对手次数及消耗
export function getRefOppCnt(refOppCnt: number, refOppTime: Date) { export function getRefOppCnt(refOppCnt: number, refOppTime: Date) {
let curTime = new Date(); let curTime = new Date();
if(shouldRefresh(refOppTime, curTime, PVP_CONST.REFRESH_TIME)) { let shouldRefOpp = shouldRefresh(refOppTime, curTime, PVP_CONST.REFRESH_TIME);
if(shouldRefOpp) {
refOppCnt = 0; refOppTime = curTime; refOppCnt = 0; refOppTime = curTime;
} }
return { return {
shouldRefOpp,
refOppCnt, refOppTime, refOppCnt, refOppTime,
consume: gameData.pvpRefreshConsume.get(refOppCnt + 1) consume: gameData.pvpRefreshConsume.get(refOppCnt + 1)
} }
@@ -376,15 +378,26 @@ export async function findPvpDefAllByRoleId(roleId: string) {
pvpDefense.seasonEndTime = seasonEndTime; pvpDefense.seasonEndTime = seasonEndTime;
} }
let {challengeCnt, challengeRefTime} = refresh(pvpDefense.challengeCnt, pvpDefense.challengeRefTime, pvpDefense.seasonEndTime); let {challengeCnt, challengeRefTime} = refresh(pvpDefense.challengeCnt, pvpDefense.challengeRefTime, pvpDefense.seasonEndTime);
let { refOppCnt, refOppTime } = getRefOppCnt(pvpDefense.refOppCnt, pvpDefense.refOppTime); // 刷新次数 let { refOppCnt, refOppTime, shouldRefOpp } = getRefOppCnt(pvpDefense.refOppCnt, pvpDefense.refOppTime); // 刷新次数
if (challengeCnt != pvpDefense.challengeCnt || refOppCnt != pvpDefense.refOppCnt) { if (challengeCnt != pvpDefense.challengeCnt || refOppCnt != pvpDefense.refOppCnt || shouldRefOpp) {
await PvpDefenseModel.updateInfo( roleId, { challengeCnt, challengeRefTime, refOppCnt, refOppTime}); let update: pvpUpdateInter = {
challengeCnt, challengeRefTime, refOppCnt, refOppTime
};
if(shouldRefOpp) {
let role = <RoleType>pvpDefense.role;
let oppPlayers = await refreshEnemies(role, pvpDefense.score, pvpDefense.pLv);
update.oppPlayers = oppPlayers;
pvpDefense.oppPlayers = oppPlayers;
}
await PvpDefenseModel.updateInfo( roleId, update);
pvpDefense.challengeCnt = challengeCnt; pvpDefense.challengeCnt = challengeCnt;
pvpDefense.challengeRefTime = challengeRefTime; pvpDefense.challengeRefTime = challengeRefTime;
pvpDefense.refOppCnt = refOppCnt; pvpDefense.refOppCnt = refOppCnt;
pvpDefense.refOppTime = refOppTime; pvpDefense.refOppTime = refOppTime;
} }
return {pvpDefense, warId}; return {pvpDefense, warId, shouldRefOpp};
} }
// 获取机器人阵容 // 获取机器人阵容
+1 -1
View File
@@ -5,7 +5,7 @@ import Role, { } from './Role';
import PvpDef, { } from './PvpDefense'; import PvpDef, { } from './PvpDefense';
import { PVP_PLAYER_POS, PVP_HERO_POS } from '../consts'; import { PVP_PLAYER_POS, PVP_HERO_POS } from '../consts';
interface pvpUpdateInter { export interface pvpUpdateInter {
_id?: string; _id?: string;
oppPlayers?: OppPlayers[]; oppPlayers?: OppPlayers[];
hisScore?: number; hisScore?: number;