活动:支持礼包兑换
This commit is contained in:
@@ -0,0 +1,110 @@
|
||||
import { GIFT_PACKAGE_TYPE, ACTIVITY_RESOURCES_TYPE } from '../consts';
|
||||
import { gameData } from '../pubUtils/data';
|
||||
import { addItems, createHeroes } from './rewardService';
|
||||
import { RewardParam } from '../domain/activityField/rewardField';
|
||||
import { CreateHeroParam } from '../domain/roleField/hero';
|
||||
import { DicGiftPackage } from '../pubUtils/dictionary/DicGiftPackage';
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 兑换礼包
|
||||
* @param giftID 礼包id
|
||||
* @param roleId 角色id
|
||||
* @param roleName 角色名称
|
||||
* @param sid
|
||||
*/
|
||||
export async function useGiftPackage(roleId: string, roleName: string, sid: string, serverId: number, funcs: number[], giftID: number, selected: Array<number> = []) {
|
||||
let result = { goods: [], addHeros: [] }
|
||||
let giftPackageData = gameData.giftPackage.get(giftID);
|
||||
if (!giftPackageData) {
|
||||
return result
|
||||
}
|
||||
let giftType = giftPackageData.type;//礼包类型
|
||||
let reward = giftPackageData.reward;//奖励内容,数组
|
||||
switch (giftType) {
|
||||
case GIFT_PACKAGE_TYPE.ALL://全部
|
||||
{
|
||||
result = await addReward(roleId, roleName, sid, serverId, funcs, reward);
|
||||
break;
|
||||
}
|
||||
case GIFT_PACKAGE_TYPE.SELECTED_X://手选
|
||||
{
|
||||
let count = giftPackageData.count;//选择个数
|
||||
if (selected.length != count) {
|
||||
break;
|
||||
}
|
||||
let selectedReward = getSelectedReward(giftPackageData, selected)
|
||||
result = await addReward(roleId, roleName, sid, serverId, funcs, selectedReward);
|
||||
break;
|
||||
}
|
||||
case GIFT_PACKAGE_TYPE.RANDOM_X://随机
|
||||
{
|
||||
let count = giftPackageData.count;//随机个数
|
||||
let randomArray = randomSelectedData(count);
|
||||
let selectedReward = getSelectedReward(giftPackageData, randomArray)
|
||||
result = await addReward(roleId, roleName, sid, serverId, funcs, selectedReward);
|
||||
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
//结算奖励的内容
|
||||
export async function addReward(roleId: string, roleName: string, sid: string, serverId: number, funcs: number[], reward: Array<RewardParam>) {
|
||||
let giftReward = rewardItemData(reward);
|
||||
let goodArray = giftReward.goods;
|
||||
let heroArray = giftReward.heroes;
|
||||
|
||||
//兑换物品
|
||||
let goods = await addItems(roleId, roleName, sid, goodArray)
|
||||
let addHeros = [];
|
||||
if (heroArray.length > 0) {
|
||||
let heroResult = await createHeroes(roleId, roleName, sid, serverId, funcs, heroArray);
|
||||
goods = goods.concat(heroResult.goods)
|
||||
addHeros = addHeros.concat(heroResult.heroes);
|
||||
}
|
||||
return { goods, addHeros }
|
||||
}
|
||||
|
||||
//表中的奖励数据(包括礼包)转换成具体对应奖励物品的实例
|
||||
function rewardItemData(reward: Array<RewardParam>) {
|
||||
let goods: Array<RewardInter> = [];
|
||||
let heroes: Array<CreateHeroParam> = [];
|
||||
for (let obj of reward) {
|
||||
switch (obj.type) {
|
||||
case ACTIVITY_RESOURCES_TYPE.HERO:
|
||||
heroes.push({ hid: obj.id, count: obj.count })
|
||||
break;
|
||||
case ACTIVITY_RESOURCES_TYPE.GOODS:
|
||||
goods.push({ id: obj.id, count: obj.count })
|
||||
break;
|
||||
case ACTIVITY_RESOURCES_TYPE.GIFTPACKAGE://配置成礼包会立刻兑换,配置成物品会把礼包放入背包中
|
||||
let goodData = gameData.goods.get(obj.id);//礼包物品
|
||||
let giftPackageData = gameData.giftPackage.get(1)//gameData.giftPackage.get(goodData.gift);//礼包数据
|
||||
let giftReward = rewardItemData(giftPackageData.reward)
|
||||
goods = goods.concat(giftReward.goods)
|
||||
heroes = heroes.concat(giftReward.heroes)
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
return { goods, heroes }
|
||||
}
|
||||
|
||||
function getSelectedReward(giftData: DicGiftPackage, selected: Array<number>) {
|
||||
let selectedReward = [];
|
||||
|
||||
return selectedReward;
|
||||
}
|
||||
|
||||
function randomSelectedData(count: number) {
|
||||
let arr = [];
|
||||
|
||||
return arr;
|
||||
}
|
||||
Reference in New Issue
Block a user