import { TASK_TYPE, ACTIVITY_RESOURCES_TYPE, ACTIVITY_TYPE } from '../../consts'; import { ActivityModelType } from '../../db/Activity'; import { ActivityBuyRecordsModelType } from '../../db/ActivityBuyRecords'; import { ActivityGrowthFundModelType } from '../../db/ActivityGrowthFund'; import { RewardInter } from '../../pubUtils/interface'; import { parseGoodStrWithType, parseHeroStrWithType, splitString } from '../../pubUtils/util'; import { CreateHeroParam } from '../roleField/hero'; import { ActivityBase } from './activityField'; // 成长基金每个奖励的数据 export class GrowthFundItem { pageIndex: number; // 第几页,从1开始 cellIndex: number; // 第几个,从1开始 name: string; //名称 taskType: number; // 任务类型 dic_zyz_taskType.json taskParam: string; //任务数据 dic_zyz_taskType.json taskParamArray: Array; //任务数据 dic_zyz_taskType.json reward: string; // 任务奖励,格式:1&3&1(类型&id&数量) 类型定义:1.英雄,2.物品 isComplete: boolean = false; //是否完成任务 isReceive: boolean = false; //是否领取过奖励 constructor(data: any) { this.pageIndex = data.pageIndex; this.cellIndex = data.cellIndex; this.name = data.name; this.taskType = data.taskType; this.taskParam = data.taskParam; this.reward = data.reward; this.taskParamArray = splitString(data.taskParam, '&') } 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 canReceive(): boolean { return !this.isReceive; } } // 成长基金活动数据 export class GrowthFundData extends ActivityBase { list: Array = []; price: number = 0;//高阶价格 buyRecords: Array = [];//高阶购买记录 //是否是高阶,需要购买 public isVipActivity() { return this.type == ACTIVITY_TYPE.GROWTH_FUND_MAIN_VIP || this.type == ACTIVITY_TYPE.GROWTH_FUND_TOWER_VIP || this.type == ACTIVITY_TYPE.GROWTH_FUND_MAIN_ELITE_VIP } //是否购买page public isBuy(pageIndex: number) { let index = this.buyRecords.findIndex(obj => { return obj == pageIndex }); return index != -1; } //全部领取完成 public isComplete() { for (let i = 0; i < this.list.length; i++) { let item = this.list[i]; if (!item.isReceive) { return false } } return true; } public findGrowthFundItem(pageIndex: number, cellIndex: number) { let index = this.list.findIndex(obj => { return obj && obj.pageIndex == pageIndex && obj.cellIndex == cellIndex }) return (index != -1) ? this.list[index] : null; } //解析玩家领取记录 public setPlayerRecords(data: ActivityGrowthFundModelType[]) { for (let obj of this.list) { let index = data.findIndex(record => { return obj.pageIndex == record.pageIndex && obj.cellIndex == record.cellIndex }) if (index != -1) { obj.isReceive = data[index].isReceive; } } } //高阶版购买记录 public initBuyRecords(buyRecords: ActivityBuyRecordsModelType[]) { for (let obj of buyRecords) { this.buyRecords.push(obj.pageIndex); } } public initData(data: string) { let dataObj = JSON.parse(data); this.price = dataObj.price; let arr = dataObj.data; for (let obj of arr) { this.list.push(new GrowthFundItem(obj)) } } constructor(activityData: ActivityModelType) { super(activityData) this.initData(activityData.data) } }