✨ feat(兼容): 配表使用后台隐藏物品
This commit is contained in:
@@ -11,6 +11,7 @@ import { GuildModel } from '../../db/Guild';
|
||||
import { pushGuildInfoUpdate } from '../guildService';
|
||||
import { combineItems } from '../role/util';
|
||||
import { recordGuildFund } from './timeLimitRankService';
|
||||
import { filterGoods, isGoodsHidden, isHeroHidden } from '../dataService';
|
||||
|
||||
|
||||
|
||||
@@ -53,8 +54,8 @@ export async function useGiftPackage(roleId: string, roleName: string, sid: stri
|
||||
if (selected.length != count) {
|
||||
break;
|
||||
}
|
||||
let selectedReward = getSelectedReward(giftPackageData, selected)
|
||||
let allReward = [];
|
||||
let selectedReward = getSelectedReward(giftPackageData.reward, selected)
|
||||
let allReward: { type: number, id: number, count: number }[] = [];
|
||||
if (giftCount > 1) {
|
||||
for (let obj of selectedReward) {
|
||||
allReward.push({ type: obj.type, id: obj.id, count: obj.count * giftCount })
|
||||
@@ -62,17 +63,23 @@ export async function useGiftPackage(roleId: string, roleName: string, sid: stri
|
||||
} else {
|
||||
allReward = selectedReward;
|
||||
}
|
||||
let gids = allReward.filter(cur => cur.type == 2).map(cur => cur.id);
|
||||
if(gids.length > 0 && isGoodsHidden(...gids)) return resResult(STATUS.ITEM_IS_HIDDEN);
|
||||
let hids = allReward.filter(cur => cur.type == 1).map(cur => cur.id);
|
||||
if(hids.length > 0 && isHeroHidden(...gids)) return resResult(STATUS.HERO_IS_HIDDEN);
|
||||
|
||||
result = await addReward(roleId, roleName, sid, serverId, allReward, ITEM_CHANGE_REASON.USE_GIFT_PACKAGE);
|
||||
break;
|
||||
}
|
||||
case GIFT_PACKAGE_TYPE.RANDOM_X://随机
|
||||
{
|
||||
let count = giftPackageData.count;//随机个数
|
||||
let allReward = [];
|
||||
let pool = giftPackageData.reward.filter(cur => cur.type == 1? !isHeroHidden(cur.id): !isGoodsHidden(cur.id));
|
||||
let allReward: { type: number, id: number, count: number }[] = [];
|
||||
for (let i = 0; i < giftCount; i++) {
|
||||
let selectedArray = randomSelectedData(giftPackageData.reward.length, count);
|
||||
let selectedReward = getSelectedReward(giftPackageData, selectedArray)
|
||||
allReward = allReward.concat(selectedReward);
|
||||
let selectedArray = randomSelectedData(pool.length, count);
|
||||
let selectedReward = getSelectedReward(pool, selectedArray)
|
||||
allReward.push(...selectedReward);
|
||||
}
|
||||
result = await addReward(roleId, roleName, sid, serverId, allReward, ITEM_CHANGE_REASON.USE_GIFT_PACKAGE);
|
||||
break;
|
||||
@@ -137,14 +144,14 @@ export function rewardItemData(reward: Array<RewardParam>) {
|
||||
return { goods, heroes }
|
||||
}
|
||||
|
||||
export function getSelectedReward(giftData: DicGiftPackage, selected: Array<number>): Array<RewardParam> {
|
||||
console.log('bbbbbbbbbbbbbbbbbbb', JSON.stringify(selected), JSON.stringify(giftData))
|
||||
export function getSelectedReward(reward: RewardParam[], selected: Array<number>): Array<RewardParam> {
|
||||
console.log('bbbbbbbbbbbbbbbbbbb', JSON.stringify(selected), JSON.stringify(reward))
|
||||
|
||||
let selectedReward: Array<RewardParam> = [];
|
||||
for (let i = 0; i < selected.length; i++) {
|
||||
let index = selected[i];
|
||||
if (giftData.reward.length > index) {
|
||||
selectedReward.push(giftData.reward[index]);
|
||||
if (reward.length > index) {
|
||||
selectedReward.push(reward[index]);
|
||||
}
|
||||
}
|
||||
return selectedReward;
|
||||
|
||||
Reference in New Issue
Block a user