Files
ZYZ/shared/domain/activityField/signInField.ts
2021-04-28 19:32:17 +08:00

81 lines
2.7 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 { ACTIVITY_RESOURCES_TYPE } from '../../consts';
import { ActivityModelType } from '../../db/Activity';
import { ActivitySignInModelType } from '../../db/ActivitySignIn';
import { RewardInter } from '../../pubUtils/interface';
import { parseGoodStrWithType, parseHeroStrWithType } from '../../pubUtils/util';
import { CreateHeroParam } from '../roleField/hero';
import { ActivityBase } from './activityField';
// 每天签到配置数据
export class SignInItem {
dayIndex: number; // 第几天,从1开始
reward: string; // 签到奖励,格式:1&3&1(类型&id&数量) 类型定义:1.英雄2.物品
isReceive: boolean = false; //是否领取
constructor(data: any) {
console.log('dddddddddd', data)
this.dayIndex = data.dayIndex;
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.isReceive;
}
}
// 成长活动数据
export class SignInData extends ActivityBase {
list: Array<SignInItem> = [];
//第几天的签到奖励
public findDayItem(dayIndex: number) {
let index = this.list.findIndex(obj => { return obj && obj.dayIndex == dayIndex })
return (index != -1) ? this.list[index] : null;
}
//解析玩家签到记录
public setPlayerRecords(data: ActivitySignInModelType[]) {
for (let obj of this.list) {
let index = data.findIndex(record => { return obj.dayIndex == record.dayIndex })
if (index != -1) {
obj.isReceive = data[index].isReceive;
}
}
}
public initData(data: string) {
let arr = JSON.parse(data);
for (let obj of arr) {
console.log('obj', obj)
this.list.push(new SignInItem(obj))
}
}
constructor(activityData: ActivityModelType) {
super(activityData)
this.initData(activityData.data)
}
}