import { TASK_TYPE, ACTIVITY_RESOURCES_TYPE } from '../../consts'; import { ActivityModelType } from '../../db/Activity'; import { ActivityDailyChallengesModelType } from '../../db/ActivityDailyChallenges'; import { RewardInter } from '../../pubUtils/interface'; import { parseGoodStrWithType, parseHeroStrWithType, splitString } from '../../pubUtils/util'; import { CreateHeroParam } from '../roleField/hero'; import { ActivityBase } from './activityField'; // 今日挑战的每日配置数据 export class DailyItem { dayIndex: number; // 第几天,从1开始 cellIndex: number; // 当天第几行,从1开始 name: string; // 任务名称 taskType: number; // 任务类型 dic_zyz_taskType.json taskParam: string; //任务数据 dic_zyz_taskType.json condition: number; //任务数据条件 dic_zyz_taskType.jsonT reward: string; // 任务奖励,格式:1&3&1(类型&id&数量) 类型定义:1.英雄,2.物品 totalCount: number = 0; //完成任务累计次数 receiveRewardCount: number = 0; //领取奖励次数 constructor(data: any) { this.dayIndex = data.dayIndex; this.cellIndex = data.cellIndex; this.name = data.name; this.taskType = data.taskType; this.taskParam = data.taskParam; this.condition = data.condition; this.reward = data.reward; } 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.receiveRewardCount == 0; } public isComplete(): boolean { let complete = false; switch (this.taskType) { case TASK_TYPE.ROLE_LV: complete = this.totalCount >= this.condition; break; case TASK_TYPE.GUILD_JOIN: complete = this.totalCount >= this.condition; break; case TASK_TYPE.LOGIN_SUM: complete = this.totalCount >= this.condition; break; case TASK_TYPE.HERO_NUM: complete = this.totalCount >= this.condition; break; case TASK_TYPE.ROLE_TITLE: complete = this.totalCount >= this.condition; break; case TASK_TYPE.GASHA: complete = this.totalCount >= this.condition; break; case TASK_TYPE.EQUIP_STRENGTHEN: complete = this.totalCount >= this.condition; break; case TASK_TYPE.BATTLE_MAIN: complete = this.totalCount >= this.condition; break; case TASK_TYPE.EQUIP_JEWEL_SUM: complete = this.totalCount >= this.condition; break; case TASK_TYPE.GUILD_TRAIN: complete = this.totalCount >= this.condition; break; case TASK_TYPE.ROLE_SCHOOL_PUT_HERO: complete = this.totalCount >= this.condition; break; case TASK_TYPE.GUILD_ACTIVITY: complete = this.totalCount >= this.condition; break; default: complete = false; break; } return complete; } } // 今日挑战活动数据 export class DailyChallengesData extends ActivityBase { list: Array = []; public findDailyChallengesItem(dayIndex: number, cellIndex: number, type: number) { let index = this.list.findIndex(obj => { return obj && obj.dayIndex == dayIndex && obj.cellIndex == cellIndex && obj.taskType == type }) return (index != -1) ? this.list[index] : null; } public findTaskByType(type: TASK_TYPE, dayIndex: number) { return this.list.filter(obj => { return obj && obj.taskType == type && obj.dayIndex == dayIndex; }) } //解析玩家领取记录 public setPlayerRecords(data: ActivityDailyChallengesModelType[]) { for (let obj of this.list) { let index = data.findIndex(record => { return obj.dayIndex == record.dayIndex && obj.cellIndex == record.cellIndex }) if (index != -1) { obj.totalCount = data[index].totalCount ? data[index].totalCount : 0; obj.receiveRewardCount = data[index].receiveRewardCount ? data[index].receiveRewardCount : 0; } else { obj.totalCount = 0; obj.receiveRewardCount = 0 } } } public initData(data: string) { let arr = JSON.parse(data); for (let obj of arr) { this.list.push(new DailyItem(obj)) } } constructor(activityData: ActivityModelType) { super(activityData) this.initData(activityData.data) } }