Files
ZYZ/shared/domain/activityField/growthFundField.ts
2021-04-30 16:01:49 +08:00

128 lines
4.5 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, 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<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> = [];
price: number = 0;//高阶价格
buyRecords: Array<number> = [];//高阶购买记录
//是否是高阶,需要购买
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)
}
}