import { ActivityModelType } from '../../db/Activity'; import { ActivityNewHeroGachaModelType } from '../../db/ActivityNewHeroGacha'; import { RewardInter } from '../../pubUtils/interface'; import { parseGoodStr, splitString } from '../../pubUtils/util'; import { ActivityBase } from './activityField'; // 每个英雄的奖池配置数据 export class NewHeroGachaItem { selected: boolean = false;//选中武将 floorCount: number = 0;//保底最大的次数,一定会出现一次 count: number = 0;//多少次没有抽中 hasGetFloor: boolean = false; // 是否有抽到保底,伪随机算法,抽到后未到保底次数强制不给 hid: number = 0;//武将id name: string = '';//名字 cost: RewardInter[];//每次抽卡消耗资源 floorReward: number = 0;//保底奖励,percent下标+1 percent: { id: number, weight: number, goodId: number }[];//奖品百分比 contentId & percent & id(英雄hid,物品id) commonReward: string = "";//固定奖 格式:1&3&1(类型&id&数量) 类型定义:1.英雄,2.物品 constructor(data: any) { this.hid = data.hid; this.name = data.name; this.floorCount = data.floorCount; this.commonReward = data.commonReward; this.cost = parseGoodStr(data.cost); this.percent = []; this.floorReward = data.floorReward - 1; this.count = 0; this.selected = false; let arr = data.percent.split('|').filter(obj => { return obj && obj != '' }); for (let obj of arr) { let numArr = splitString(obj, '&'); this.percent.push({ id: numArr[0], weight: numArr[1], goodId: numArr.length > 2 ? numArr[2] : 0, }) } } } // 每日关卡活动数据 export class NewHeroGachaData extends ActivityBase { list: NewHeroGachaItem[] = []; public findItem(hid: number) { let index = this.list.findIndex(obj => { return obj && obj.hid == hid }) return (index != -1) ? this.list[index] : null; } //解析玩家记录 public setPlayerRecords(data: ActivityNewHeroGachaModelType) { if (!data) { return; } for (let item of this.list) { item.count = data.count ? data.count : 0; item.hasGetFloor = data.hasGetFloor||false; item.selected = (data && data.selectedHid == item.hid); } } public initData(data: string) { let dataObj = JSON.parse(data); let arr = dataObj; for (let obj of arr) { this.list.push(new NewHeroGachaItem(obj)) } } constructor(activityData: ActivityModelType, createTime: number, serverTime: number) { super(activityData, createTime, serverTime) this.initData(activityData.data) } }