fix 获取对手详情错误&刷新重复

This commit is contained in:
luying
2021-01-15 11:13:00 +08:00
parent 47e150f609
commit 1d68b23ef7
2 changed files with 29 additions and 9 deletions
+26 -6
View File
@@ -73,14 +73,19 @@ export async function getEnemies(oppPlayers: OppPlayers[], winStreakNum: number)
roleId: oppDef.oppRoleId,
defCe: reduceCe(oppDef.defCe),
addScore: dicOpponent.score,
rankLv: 0,
rankLv: oppDef.rankLv,
plusScore: getPlusScore(winStreakNum)
});
}
return result
}
// 刷新对手
/**
* @description 刷新对手三个人
* @param role 数据库里我的role
* @param score 我的军功
* @param pLv 我的排名
*/
export async function refreshEnemies(role: RoleType, score: number, pLv: number) {
let system = await SystemConfigModel.findSystemConfig();
let mapWarJson = gameData.warJson.get(system.warId);
@@ -104,6 +109,7 @@ export async function refreshEnemies(role: RoleType, score: number, pLv: number)
}
export async function matchPlayerByRank(oppPlayers: OppPlayers[], mapWarJson: DicWarJson[], roleId: string, pos: number) {
console.log('matchPlayerByRank', JSON.stringify(oppPlayers))
let ridRanks = new Array<number>(); // 已经被使用了的排名
for(let { roleId: curRoleId } of oppPlayers) {
let rankLv = await getMyRank(REDIS_KEY.PVP_RANK, 0, curRoleId);
@@ -142,7 +148,7 @@ export async function matchPlayerByRank(oppPlayers: OppPlayers[], mapWarJson: Di
let pvpHistoryOpp = await generPlayerOppHis(pvpdefense, mapWarJson, roleId, pos);
oppPlayers.push({
roleId: pvpdefense.roleId,
roleId: pvpHistoryOpp.oppRoleId,
oppDef: pvpHistoryOpp._id,
pos,
isRobot: false,
@@ -151,10 +157,12 @@ export async function matchPlayerByRank(oppPlayers: OppPlayers[], mapWarJson: Di
}
async function matchPlayer(oppPlayers: OppPlayers[], mapWarJson: DicWarJson[], roleId: string, pLv: number, dicOpp: DicPvpOpponent ) {
console.log('matchPlayer', JSON.stringify(oppPlayers))
let { id: pos, minLv, maxLv } = dicOpp
let range = await PvpDefenseModel.findByTeamLv(pLv + minLv, pLv + maxLv);
range = range.filter(cur => {
return oppPlayers.findIndex(ccur => ccur.roleId == cur.roleId) != -1;
return oppPlayers.findIndex(ccur => ccur.roleId == makeRobotId(cur.roleId)) == -1;
});
if(range.length <= 0) return false;
@@ -169,7 +177,7 @@ async function matchPlayer(oppPlayers: OppPlayers[], mapWarJson: DicWarJson[], r
}
let pvpHistoryOpp = await generPlayerOppHis(result, mapWarJson, roleId, pos);
oppPlayers.push({
roleId: result.roleId,
roleId: pvpHistoryOpp.oppRoleId,
oppDef: pvpHistoryOpp._id,
pos,
isRobot: false,
@@ -205,12 +213,14 @@ async function generPlayerOppHis(result: PvpDefenseType, mapWarJson: DicWarJson[
}
}
let pvpHistoryOpp = await PvpHistoryOppModel.createPvpOpp({
...result, ...role, pos, rankLv, heroes, roleId, oppRoleId: result.roleId
...result, ...role, pos, rankLv, heroes, roleId, oppRoleId: makeRobotId(result.roleId)
});
return pvpHistoryOpp;
}
async function matchRobot(oppPlayers: OppPlayers[], mapWarJson: DicWarJson[], role: RoleType, pLv: number, dicOpp: DicPvpOpponent) {
console.log('matchRobot', JSON.stringify(oppPlayers))
let { lv: myLv, topFiveCe: myCe, roleId } = role;
let { id: pos, minLv, maxLv, ratio } = dicOpp;
let range = gameData.pvpWar;
@@ -269,6 +279,16 @@ export function checkRoleIsRobot(roleId: string) {
return !!roleId.match(/_r/);
}
// 将一般的roleId转为带_r的
export function makeRobotId(roleId: string) {
return `${roleId}_r`;
}
// 将一般的roleId去掉_r
export function robotIdComBack(robotRoleId: string) {
return robotRoleId.replace(/_r/, '')
}
// 根据连胜次数,获得加成的积分
export function getPlusScore(win: number) {
let result = win - 1;