名将擂台:刷新机制

This commit is contained in:
luying
2022-08-22 14:18:52 +08:00
parent f1b1ac49e7
commit 87bde927d2
2 changed files with 19 additions and 19 deletions
+15 -12
View File
@@ -88,7 +88,7 @@ export async function getLadderEnemies(ladderData: LadderMatchType) {
async function getOppPlayerDetailByDb(serverId: number, oppPlayers: LadderOppPlayerInDB[]) { async function getOppPlayerDetailByDb(serverId: number, oppPlayers: LadderOppPlayerInDB[]) {
let oppPlayersReturn: LadderOppPlayerReturn[] = []; let oppPlayersReturn: LadderOppPlayerReturn[] = [];
for(let oppPlayer of oppPlayers) { for(let oppPlayer of oppPlayers) {
let player = await generateOppPlayer(serverId, oppPlayer.rank, oppPlayers); let player = await generateOppPlayer(serverId, oppPlayer.rank);
oppPlayersReturn.push(player); oppPlayersReturn.push(player);
} }
return oppPlayersReturn; return oppPlayersReturn;
@@ -112,23 +112,26 @@ export async function generateOppPlayers(rankNumbers: number[], serverId: number
let oppPlayers: LadderOppPlayerReturn[] = [], oppPlayersSave: LadderOppPlayerInDB[] = []; let oppPlayers: LadderOppPlayerReturn[] = [], oppPlayersSave: LadderOppPlayerInDB[] = [];
for(let rank of rankNumbers) { for(let rank of rankNumbers) {
let player = await generateOppPlayer(serverId, rank, ranks); let player = await generateOppPlayer(serverId, rank);
oppPlayersSave.push({ rank, roleId: player.roleId, isRobot: player.isRobot }); oppPlayersSave.push({ rank });
oppPlayers.push(player); oppPlayers.push(player);
} }
await LadderMatchModel.updateByRoleId(roleId, { ...update, oppPlayers: oppPlayersSave }); await LadderMatchModel.updateByRoleId(roleId, { ...update, oppPlayers: oppPlayersSave });
return oppPlayers return oppPlayers
} }
async function generateOppPlayer(serverId: number, rank: number, oppPlayers: { rank: number, roleId: string, isRobot?: boolean }[]) { async function generateOppPlayer(serverId: number, rank: number) {
let player = oppPlayers.find(cur => cur.rank == rank && !cur.isRobot); let r = new Rank(REDIS_KEY.LADDER, { serverId }, false);
let result = new LadderOppPlayerReturn(rank, !player || rank == 3001); let result = new LadderOppPlayerReturn(rank);
if(player && rank != 3001) { if(rank < 3001) {
let r = new Rank(REDIS_KEY.LADDER, { serverId }, false); let players = <RoleRankInfo[]>await r.getRankByRange(rank, rank);
let param = <RoleRankInfo>await r.getParam(player.rank, player.roleId, [player.rank]); if(players.length > 0) {
let defCe = await getLadderDefCe(player.roleId); let player = players[0];
result.setByRedis(param, parseInt(`${defCe}`)); let defCe = await getLadderDefCe(player.roleId);
} else { result.setByRedis(player, parseInt(`${defCe}`));
}
}
if(!result.roleId) {
let dicLadderDifficultRatio = gameData.ladderDifficultRatio.get(rank); let dicLadderDifficultRatio = gameData.ladderDifficultRatio.get(rank);
result.setByRobot(dicLadderDifficultRatio); result.setByRobot(dicLadderDifficultRatio);
} }
+4 -7
View File
@@ -54,10 +54,6 @@ export class LadderDefense {
export class LadderOppPlayerInDB { export class LadderOppPlayerInDB {
@prop({ required: true }) @prop({ required: true })
rank: number; rank: number;
@prop({ required: true })
roleId: string;
@prop({ required: true })
isRobot: boolean;
} }
// ladderMatchRec // ladderMatchRec
@@ -206,13 +202,12 @@ export class LadderOppPlayerReturn {
defCe: number = 0; // 对手防守阵容战力 defCe: number = 0; // 对手防守阵容战力
isRobot: boolean = true; // 是否是机器人 isRobot: boolean = true; // 是否是机器人
constructor(rank: number, isRobot: boolean) { constructor(rank: number) {
this.rank = rank; this.rank = rank;
this.isRobot = isRobot;
if(isRobot) this.roleId = `robot${this.rank}`;
} }
setByRedis(param: RoleRankInfo, defCe: number) { setByRedis(param: RoleRankInfo, defCe: number) {
this.isRobot = false;
this.roleId = param.roleId; this.roleId = param.roleId;
this.roleName = param.roleName; this.roleName = param.roleName;
this.head = param.head; this.head = param.head;
@@ -224,6 +219,8 @@ export class LadderOppPlayerReturn {
} }
setByRobot(ladderDifficultRatio: DicLadderDifficultRatio) { setByRobot(ladderDifficultRatio: DicLadderDifficultRatio) {
this.isRobot = true;
this.roleId = `robot${this.rank}`;
this.head = ladderDifficultRatio.head; this.head = ladderDifficultRatio.head;
this.spine = ladderDifficultRatio.spine; this.spine = ladderDifficultRatio.spine;
this.lv = ladderDifficultRatio.level; this.lv = ladderDifficultRatio.level;