Files
ZYZ/shared/domain/activityField/dailyGiftsField.ts
2021-06-01 18:35:10 +08:00

79 lines
2.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 { ActivityModelType } from '../../db/Activity';
import { ActivityDailyGiftsModelType } from '../../db/ActivityDailyGifts';
import { parseResStr } from '../../pubUtils/util';
import { ConsumeResParam } from '../activityField/consumeField';
import { ActivityBase } from './activityField';
// 每日礼包配置数据
export class DailyGiftItem {
dayIndex: number; // 第几天,从1开始
cellIndex: number; // 当天第几行从1开始
name: string; // 名称
consume: string; // 购买的资源数据; 格式:type:id:count, type:ACTIVITY_RESOURCES_TYPE;RMB时id无效
reward: string; // 任务奖励,格式:1&3&1(类型&id&数量) 类型定义:1.英雄2.物品
maxCount: number = 1; //最大可购买次数
discount: number = 0;// 商品显示的折扣
buyCount: number = 0; //购买次数
constructor(data: any) {
this.dayIndex = data.dayIndex;
this.cellIndex = data.cellIndex;
this.name = data.name;
this.consume = data.consume;
this.reward = data.reward;
this.maxCount = data.maxCount;
this.discount = data.discount;
this.buyCount = 0;
}
//消耗的资源
public consumeRes(): ConsumeResParam {
let consumeArray = parseResStr(this.consume);
return consumeArray[0];
}
public canBuy(): boolean {
return this.buyCount < this.maxCount;
}
}
// 今日挑战活动数据
export class DailyGiftsData extends ActivityBase {
list: Array<DailyGiftItem> = [];
public findDailyGiftsItem(dayIndex: number, cellIndex: number) {
let index = this.list.findIndex(obj => { return obj && obj.dayIndex == dayIndex && obj.cellIndex == cellIndex })
return (index != -1) ? this.list[index] : null;
}
//解析玩家购买记录
public setPlayerRecords(data: ActivityDailyGiftsModelType[]) {
for (let obj of this.list) {
let index = data.findIndex(record => { return obj.dayIndex == record.dayIndex && obj.cellIndex == record.cellIndex })
if (index != -1) {
obj.buyCount = data[index].buyCount ? data[index].buyCount : 0;
} else {
obj.buyCount = 0;
}
}
}
public initData(data: string) {
let dataObj = JSON.parse(data);
let arr = dataObj;
for (let obj of arr) {
this.list.push(new DailyGiftItem(obj))
}
}
constructor(activityData: ActivityModelType) {
super(activityData)
this.initData(activityData.data)
}
}