Files
ZYZ/shared/domain/activityField/refreshTaskField.ts

113 lines
4.2 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 moment = require('moment');
import { REFRESH_TIME, TASK_TYPE } from '../../consts';
import { ActivityModelType } from '../../db/Activity';
import { ActivityRefreshTaskModelType } from '../../db/ActivityRefreshTask';
import { ActivityBase } from './activityField';
// 任务配置数据
export class RefreshTaskItem {
pageIndex: number; // 第几页
id: number; // id
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, pageIndex: number) {
this.pageIndex = pageIndex;
this.id = data.id;
this.name = data.name;
this.taskType = data.taskType;
this.taskParam = data.taskParam;
this.condition = data.condition;
this.reward = data.reward;
this.totalCount = 0;
this.receiveRewardCount = 0;
}
}
// 任务配置数据
export class RefreshTaskPage {
pageIndex: number; // 第几页
name: string; // 任务名称
items: Array<RefreshTaskItem> = [];
constructor(data: any) {
this.pageIndex = data.pageIndex;
this.name = data.name;
this.items = [];
for (let obj of data.items) {
this.items.push(new RefreshTaskItem(obj, data.pageIndex))
}
}
}
// 任务活动数据
export class RefreshTaskData extends ActivityBase {
name: string = '';//活动名称
interval: number = 0;//周期间隔(秒)
list: Array<RefreshTaskPage> = [];
nextRefreshTime: number;//下次刷新时间
roundIndex: number = 1;//周期数从1开始
public findItem(pageIndex: number, id: number, type: TASK_TYPE) {
let index = this.list.findIndex(obj => { return obj && obj.pageIndex === pageIndex });
if (index != -1) {
let itemIndex = this.list[index].items.findIndex(obj => { return obj && obj.id == id && obj.taskType == type });
if (itemIndex != -1) {
return this.list[index].items[itemIndex];
}
}
return null
}
public findTaskByType(type: TASK_TYPE) {
let arr = [];
for (let pageData of this.list) {
let items = pageData.items.filter(item => { return item.taskType == type });
arr = arr.concat(items)
}
return arr;
}
//解析玩家领取记录
public setPlayerRecords(data: ActivityRefreshTaskModelType[]) {
for (let pageData of this.list) {
for (let item of pageData.items) {
let index = data.findIndex(record => { return item.id == record.id && item.pageIndex == record.pageIndex && item.taskType == record.type })
if (index != -1) {
item.totalCount = data[index].totalCount ? data[index].totalCount : 0;
item.receiveRewardCount = data[index].receiveRewardCount ? data[index].receiveRewardCount : 0;
}
}
}
}
public initData(data: string) {
this.nextRefreshTime = this.endTime;
let dataObj = JSON.parse(data);
this.name = dataObj.name;
this.interval = dataObj.interval;
this.beginTime = moment(this.beginTime).startOf('d').add(REFRESH_TIME, 'hour').valueOf();
if (this.interval > 0) {
this.roundIndex = Math.ceil((moment(new Date).valueOf() - this.beginTime) / (this.interval * 1000));
this.nextRefreshTime = moment(this.beginTime).add(this.interval * this.roundIndex, 'second').valueOf();
}
console.log(moment(new Date).valueOf(), moment(this.beginTime).valueOf(), this.roundIndex,)
let arr = dataObj.data;
for (let obj of arr) {
this.list.push(new RefreshTaskPage(obj))
}
}
constructor(activityData: ActivityModelType) {
super(activityData)
this.initData(activityData.data)
}
}