Files
ZYZ/shared/domain/activityField/growthFundField.ts
2021-04-29 20:55:15 +08:00

102 lines
3.6 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { TASK_TYPE, ACTIVITY_RESOURCES_TYPE } from '../../consts';
import { ActivityModelType } from '../../db/Activity';
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<number>; //任务数据 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<GrowthFundItem> = [];
//全部领取完成
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 initData(data: string) {
let arr = JSON.parse(data);
for (let obj of arr) {
this.list.push(new GrowthFundItem(obj))
}
}
constructor(activityData: ActivityModelType) {
super(activityData)
this.initData(activityData.data)
}
}