🐞 fix(军团): 练兵场等级奖励跨军团领取重复问题

This commit is contained in:
luying
2023-04-17 17:26:21 +08:00
parent cd15438f86
commit 3eb472030f
5 changed files with 244 additions and 108 deletions

View File

@@ -137,7 +137,7 @@ export function getGuildTrainInfo (guildTrain: GuildTrainType, roleId: string,
// myRank = {roleId: rankRoleId, score, rankLv: index+1};
// return {roleId: rankRoleId, score, rankLv: index+1};
// });
let { trainInstances: instances } = getArmyTrainJuDian(trainId);
let { trainInstances: instances, trainLv } = getArmyTrainJuDian(trainId);
let resTrainInstances = trainInstances.map(({hid, progress, endTime})=>{
let instance = findWhere(instances, { hid });
let isComplete = false;
@@ -147,7 +147,7 @@ export function getGuildTrainInfo (guildTrain: GuildTrainType, roleId: string,
});
let resGuildTrain = {trainId, isComplete, trainInstances: resTrainInstances, myRank: 0, ranks: [] };
return { guildTrain: resGuildTrain, trainCount, trainRewards};
return { guildTrain: resGuildTrain, trainCount, trainRewards: transTrainReward(trainRewards, trainLv)};
}
/**
* 解锁试炼trainId
@@ -291,4 +291,32 @@ export async function getGuildTrainInstance(roleId: string, guild: GuildType, us
result.buyTrainCount = buyTrainCount || 0;
result.trainLv = trainLv;
return result;
}
/**
* 检查某trainId是否可以领取
* @param trainRewards 玩家记录中已经领取过了的试炼奖励id
* @param trainId 玩家将要领取的试炼奖励id
*/
export function checkGuildTrainReward(trainRewards: number[], trainId: number) {
let dicJudian = getArmyTrainJuDian(trainId);
if(!dicJudian) return false;
let sameIndexOfcurTrain = gameData.trainIdByIndex.get(dicJudian.index)||new Map();
for(let [_lv, trainId] of sameIndexOfcurTrain) {
if(trainRewards.indexOf(trainId) != -1) return false; // 领取过
}
return true
}
/**
* 将玩家已经领取过的记录按照当前军团等级转换
* @param lv 等级
* @param trainRewards 玩家领取记录
*/
export function transTrainReward(trainRewards: number[], lv: number) {
return trainRewards.map(trainId => {
let dicJudian = getArmyTrainJuDian(trainId);
let dicNewTrain = gameData.trainIdByIndex.get(dicJudian?.index)||new Map();
return dicNewTrain?.get(lv)||0
})
}