import { ACTIVITY_RESOURCES_TYPE } from '../../consts'; import { ActivityModelType } from '../../db/Activity'; import { ActivityDailyGiftsModelType } from '../../db/ActivityDailyGifts'; import { RewardInter } from '../../pubUtils/interface'; import { parseGoodStrWithType, parseHeroStrWithType, parseResStr } from '../../pubUtils/util'; import { CreateHeroParam } from '../roleField/hero'; import { ConsumeResParam } from '../activityField/consumeField'; import { ActivityBase } from './activityField'; // 每日礼包配置数据 export class DailyGiftItem { dayIndex: number; // 第几天,从1开始 cellIndex: number; // 当天第几行,从1开始 name: string; // 名称 consume: string; // 购买的资源数据; 格式:type:id:count, type:ACTIVITY_RESOURCES_TYPE;RMB时id无效 reward: string; // 任务奖励,格式:1&3&1(类型&id&数量) 类型定义:1.英雄,2.物品 maxCount: number = 0; //最大可购买次数 buyCount: number = 0; //购买次数 constructor(data: any) { this.dayIndex = data.dayIndex; this.cellIndex = data.cellIndex; this.name = data.name; this.consume = data.consume; this.reward = data.reward; this.maxCount = data.maxCount; } //消耗的资源 public consumeRes(): ConsumeResParam { let consumeArray = parseResStr(this.consume); return consumeArray[0]; } public heroReward(): CreateHeroParam[] { let rewardArray = []; let rewardData = this.reward.split('|').filter(obj => { return obj && obj != '' }); for (let objStr of rewardData) { let reward = parseHeroStrWithType(objStr); rewardArray.push(reward); } return rewardArray.filter(obj => { return obj && obj.type == ACTIVITY_RESOURCES_TYPE.HERO }) } public goodReward(): RewardInter[] { let rewardArray = []; let rewardData = this.reward.split('|').filter(obj => { return obj && obj != '' }); for (let objStr of rewardData) { let reward = parseGoodStrWithType(objStr); rewardArray.push(reward); } return rewardArray.filter(obj => { return obj && obj.type == ACTIVITY_RESOURCES_TYPE.GOODS }) } public canBuy(): boolean { return this.buyCount < this.maxCount; } } // 今日挑战活动数据 export class DailyGiftsData extends ActivityBase { list: Array = []; public findDailyGiftsItem(dayIndex: number, cellIndex: number) { let index = this.list.findIndex(obj => { return obj && obj.dayIndex == dayIndex && obj.cellIndex == cellIndex }) return (index != -1) ? this.list[index] : null; } //解析玩家购买记录 public setPlayerRecords(data: ActivityDailyGiftsModelType[]) { for (let obj of this.list) { let index = data.findIndex(record => { return obj.dayIndex == record.dayIndex && obj.cellIndex == record.cellIndex }) if (index != -1) { obj.buyCount = data[index].buyCount; } } } public initData(data: string) { let arr = JSON.parse(data); for (let obj of arr) { this.list.push(new DailyGiftItem(obj)) } } constructor(activityData: ActivityModelType) { super(activityData) this.initData(activityData.data) } }