✨ feat(gvg): 玩家驻扎排行榜

This commit is contained in:
luying
2023-02-17 10:58:45 +08:00
parent 92191cbcca
commit fc2a86ad81
16 changed files with 190 additions and 61 deletions
@@ -72,9 +72,11 @@ function randomRank(min: number, max: number, len: number) {
}
// 根据ranks获取oppPlayer显示数据
export async function getOppPlayerByRanks(serverId: number, groupId: number, vestigeId: number, ranks: number[]) {
export async function getOppPlayerByRanks(serverId: number, groupId: number, serverType: number, vestigeId: number, ranks: number[]) {
let serverNames = await getAllServerName();
let opps = await GVGVestigeRankModel.findByRanks(groupId, vestigeId, ranks);
let opps = await GVGVestigeRankModel.findByRanks(groupId, serverType, vestigeId, ranks);
let roleIds = opps.map(cur => cur.roleId);
let roles = await RoleModel.findByRoleIds(roleIds, 'roleId roleName head frame spine heads frames spines title lv guildName serverId updatedAt')
let dicRankMap = gameData.gvgVestige.get(vestigeId);
if(!dicRankMap) return [];
let result: GVGVestigeOppPlayer[] = [];
@@ -83,7 +85,8 @@ export async function getOppPlayerByRanks(serverId: number, groupId: number, ves
let opp = opps.find(cur => cur.rank == rank);
let dicCurRank = dicRankMap.get(rank);
if(opp) {
let role = <RoleType>opp.role;
let role = roles.find(cur => cur.roleId == opp.roleId);
if(!role) continue;
let lineupce = opp.lineup.reduce((pre, cur) => pre + cur.ce, 0);
obj.setByRole(role, serverNames, lineupce, dicCurRank?.score||0);
} else {
@@ -142,13 +145,13 @@ export function isRobot(roleId: string) {
return roleId.startsWith('robot');
}
export async function checkVestigeOppStatus(configId: number, groupId: number, vestigeId: number, roleId: string, myRank: number, targetRoleId: string, rank: number) {
export async function checkVestigeOppStatus(configId: number, groupId: number, serverType: number, vestigeId: number, roleId: string, myRank: number, targetRoleId: string, rank: number) {
let myData = await GVGVestigeRankModel.findByRole(vestigeId, roleId);
if(!myData) {
let role = await RoleModel.findByRoleId(roleId, 'roleId');
let oppRanks = refreshVestigeOppRanks(-1);
myData = await GVGVestigeRankModel.initRank(configId, vestigeId, groupId, role, oppRanks );
myData = await GVGVestigeRankModel.initRank(configId, vestigeId, groupId, serverType, role, oppRanks );
}
if(myData?.rank != myRank) return VESTIGE_OPP_STATUS.MY_RANK_CHANGE;
@@ -159,7 +162,7 @@ export async function checkVestigeOppStatus(configId: number, groupId: number, v
let targetData = await GVGVestigeRankModel.findByRole(vestigeId, targetRoleId);
if(targetData?.rank != rank) return VESTIGE_OPP_STATUS.OPP_RANK_CHANGE;
}
let lockResult = await GVGVestigeLockModel.chooseOppLock(groupId, vestigeId, rank, configId, roleId, targetRoleId);
let lockResult = await GVGVestigeLockModel.chooseOppLock(groupId, serverType, vestigeId, rank, configId, roleId, targetRoleId);
if(!lockResult) return VESTIGE_OPP_STATUS.OPP_IS_LOCKED;
return VESTIGE_OPP_STATUS.BATTLE;