名将擂台:刷新机制
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user