战力计算,远征战力筛选
This commit is contained in:
@@ -77,10 +77,7 @@ export async function towerBattleEnd(channelService: ChannelService, sid: string
|
||||
|
||||
}
|
||||
const { reward } = getTowerDataByLv(towerLv);
|
||||
if (reward) {
|
||||
let result = await handleFixedReward(roleId, roleName, reward, 1);
|
||||
towerReward = result.goods;
|
||||
}
|
||||
if (reward) towerReward = reward;
|
||||
if (towerLv + 1 == HANG_UP_CONSTS.ENABLE_LV) {
|
||||
await startHangUp(roleId, roleName);
|
||||
channelService.pushMessageByUids('hangUpEnable', {code: 200, data: {enable: true}}, [{uid: roleId, sid}]);
|
||||
|
||||
@@ -17,6 +17,9 @@ export class WarReward {
|
||||
warInfo: any;
|
||||
isSuccess: boolean;
|
||||
rewards: Array<{type: number, gid: number, count: number, times: number}>;
|
||||
fixReward: string;
|
||||
conditionReward: string;
|
||||
randomReward: string;
|
||||
|
||||
constructor(roleId: string, roleName: string, battleId: number, isSuccess: boolean) {
|
||||
this.roleId = roleId;
|
||||
@@ -24,6 +27,12 @@ export class WarReward {
|
||||
this.battleId = battleId;
|
||||
this.condition = new Map();
|
||||
this.warInfo = getWarById(battleId);
|
||||
|
||||
let {fixReward = '', conditionReward = '', RandomReward = ''} = this.warInfo;
|
||||
this.fixReward = fixReward;
|
||||
this.conditionReward = conditionReward;
|
||||
this.randomReward = RandomReward;
|
||||
|
||||
this.isSuccess = isSuccess;
|
||||
}
|
||||
|
||||
@@ -31,34 +40,53 @@ export class WarReward {
|
||||
this.condition.set(id, isOk);
|
||||
}
|
||||
|
||||
private handleFixReward(num: number) {
|
||||
if(this.isSuccess) { // 成功了才给固定奖励
|
||||
let {fixReward = ''} = this.warInfo;
|
||||
let reward = decodeStr('fixReward', fixReward);
|
||||
for(let i = 0; i < num; i++) {
|
||||
for(let obj of reward) {
|
||||
this.rewards.push({type: BATTLE_REWARD_TYPE.FIX_REWARD, times: i +1, ...obj, count: obj.count });
|
||||
}
|
||||
public setFixReward(reward: string) {
|
||||
let last = this.fixReward.substr(this.fixReward.length - 1, 1);
|
||||
if(this.fixReward.length && last == '&') {
|
||||
this.fixReward += reward;
|
||||
} else {
|
||||
this.fixReward += '&' + reward;
|
||||
}
|
||||
}
|
||||
|
||||
public setConditionReward(reward: string) {
|
||||
let last = this.conditionReward.substr(this.fixReward.length - 1, 1);
|
||||
if(last == '&') {
|
||||
this.conditionReward += reward;
|
||||
} else {
|
||||
this.conditionReward += '&' + reward;
|
||||
}
|
||||
}
|
||||
|
||||
public setRandomReward(reward: string) {
|
||||
let last = this.randomReward.substr(this.fixReward.length - 1, 1);
|
||||
if(last == '&') {
|
||||
this.randomReward += reward;
|
||||
} else {
|
||||
this.randomReward += '&' + reward;
|
||||
}
|
||||
}
|
||||
|
||||
private handleFixReward(num: number, fixReward: string) {
|
||||
let reward = decodeStr('fixReward', fixReward);
|
||||
for(let i = 0; i < num; i++) {
|
||||
for(let obj of reward) {
|
||||
this.rewards.push({type: BATTLE_REWARD_TYPE.FIX_REWARD, times: i +1, ...obj, count: obj.count });
|
||||
}
|
||||
}
|
||||
}
|
||||
private handleConditionReward(num: number) {
|
||||
if(this.isSuccess) {
|
||||
let {conditionReward = ''} = this.warInfo;
|
||||
let reward = decodeStr('conditionReward', conditionReward);
|
||||
for(let i = 0; i < num; i++) {
|
||||
for(let obj of reward) {
|
||||
if(this.condition.get(obj.condition)) {
|
||||
this.rewards.push({type: BATTLE_REWARD_TYPE.CONDITION_REWARD, times: i +1, ...obj, count: obj.count});
|
||||
}
|
||||
private handleConditionReward(num: number, conditionReward: string) {
|
||||
let reward = decodeStr('conditionReward', conditionReward);
|
||||
for(let i = 0; i < num; i++) {
|
||||
for(let obj of reward) {
|
||||
if(this.condition.get(obj.condition)) {
|
||||
this.rewards.push({type: BATTLE_REWARD_TYPE.CONDITION_REWARD, times: i +1, ...obj, count: obj.count});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private async handleRandomReward(num: number) {
|
||||
if(this.isSuccess) {
|
||||
let {RandomReward:randomReward = ''} = this.warInfo;
|
||||
private async handleRandomReward(num: number, randomReward: string) {
|
||||
|
||||
let reward = decodeStr('randomReward', randomReward);
|
||||
for(let obj of reward) {
|
||||
@@ -86,16 +114,17 @@ export class WarReward {
|
||||
getNum, allNum, getSum, allSum
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public async saveReward(num: number) {
|
||||
this.rewards = new Array();
|
||||
// let warType = this.warInfo.warType;
|
||||
|
||||
this.handleFixReward(num);
|
||||
this.handleConditionReward(num);
|
||||
await this.handleRandomReward(num);
|
||||
if(this.isSuccess) { // 成功了才给固定奖励
|
||||
if(this.fixReward) this.handleFixReward(num, this.fixReward);
|
||||
if(this.conditionReward) this.handleConditionReward(num, this.conditionReward);
|
||||
if(this.randomReward) await this.handleRandomReward(num, this.randomReward);
|
||||
}
|
||||
|
||||
let returnGoods = await handleReward(this.roleId, this.roleName, this.rewards);
|
||||
return returnGoods;
|
||||
|
||||
Reference in New Issue
Block a user