| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182 |
- import { _decorator, Component, Node, Animation, Label, ProgressBar, Sprite, Vec3, tween, lerp } from 'cc';
- import { BuffData } from '../battle/BuffData';
- import { DataSystem } from '../core/data/DataSystem';
- import { Http, HttpResponseCode } from '../core/net/Http';
- import List from '../core/ui/virtualList/List';
- import { ConfigData } from '../data/ConfigData';
- import { ActivityInfoData } from './ActivityInfoData';
- import { ActivityItem, ActivityState } from './ActivityItem';
- import { TaskData } from './TaskData';
- import { TaskInfoData } from './TaskInfoData';
- import { TaskItem } from './TaskItem';
- const { ccclass, property, requireComponent } = _decorator;
- /**
- * 任务系统
- * @author 孙雄
- */
- @ccclass('Task')
- @requireComponent(Http)
- export class Task extends Component {
- @property({ tooltip: "任务列表", type: List }) list: List;
- @property({ type: Animation, tooltip: "活跃度文本特效" }) animation: Animation;
- @property({ type: Label, tooltip: "活跃度文本" }) activityLabel: Label;
- @property({ type: Animation, tooltip: "补领取特效" }) repairNode: Animation;
- @property({ type: ProgressBar, tooltip: "活跃进度条" }) progress: ProgressBar;
- @property({ tooltip: "宝箱红包", type: [ActivityItem] }) activityList: ActivityItem[] = [];
- @property({ tooltip: "特效显示节点", type: Node }) effectNode: Node;
- @property({ tooltip: "特效目标节点", type: Node }) targetNode: Node;
- // private listData = [];
- private taskActivityConfig: any;
- private taskConfig: any;
- private _activityNum: number = -1;
- private maxActiveValue: number = 0;
- private taskData: TaskData;
- private listData = [];
- start() {
- this.taskData = DataSystem.getData(TaskData);
- this.taskConfig = DataSystem.getData(ConfigData).get('task');
- this.taskActivityConfig = DataSystem.getData(ConfigData).get('taskActive');
- this.maxActiveValue = this.taskActivityConfig[4].activevalue;
- this.initTaskDaTa();
- }
- update(dt: number) {
- DataSystem.watch(TaskData, 'getTaskGiftNum') && this.setList();
- DataSystem.watch(TaskData, 'activityNum') && this.setActivity();
- DataSystem.watch(TaskData, 'replacementNum') && (this.repairNode.node.active = false);
- if (this._activityNum != -1) {
- this.progress.progress = lerp(
- this.progress.progress,
- Math.min(1, this._activityNum / this.maxActiveValue),
- dt * 10
- )
- };
- }
- private async initTaskDaTa() {
- let result = await this.getComponent(Http).send('/api/task/GetTask');
- if (result && result.code == HttpResponseCode.Success) {
- this.taskData.tasks = [];
- this.taskData.activitys = [];
- this.activityNum = result.data.active;
- this.taskData.activityNum = result.data.active;
- this.taskData.minNum = result.data.minNum;
- this.taskData.maxNum = result.data.maxNum;
- this.taskData.yesterdayIsReceive = result.data.yesterdayIsReceive;
- if (!result.data.yesterdayIsReceive && result.data.yesterdayRewardNum > 0) {
- this.repairNode.node.active = true;
- this.repairNode.play();
- }
- this.taskData.yesterdayRewardNum = result.data.yesterdayRewardNum;
- for (const key in this.taskConfig) {
- let serverData = null;
- for (let i = 0; i < result.data.taskDatas.length; i++) {
- if (result.data.taskDatas[i].id == Number(key)) {
- serverData = result.data.taskDatas[i];
- break;
- }
- }
- let data = new TaskInfoData();
- data.id = this.taskConfig[key].id;
- data.des = this.taskConfig[key].description;
- data.count1 = this.taskConfig[key].count1;
- data.count2 = this.taskConfig[key].count2;
- data.activeValue1 = this.taskConfig[key].activevalue1;
- data.activeValue2 = this.taskConfig[key].activevalue2;
- data.openId = this.taskConfig[key].gotoui;
- if (serverData) {
- data.serverCount = serverData.count;
- data.isReceive1 = serverData.isReceive1;
- data.isReceive2 = serverData.isReceive2;
- } else {
- data.serverCount = 0;
- data.isReceive1 = false;
- data.isReceive2 = false;
- }
- this.taskData.tasks.push(data);
- }
- for (const key in this.taskActivityConfig) {
- let serverData = null;
- for (let i = 0; i < result.data.activeDatas.length; i++) {
- if (result.data.activeDatas[i].id == Number(key)) {
- serverData = result.data.activeDatas[i];
- break;
- }
- }
- let data = new ActivityInfoData();
- data.id = this.taskConfig[key].id;
- data.icon = this.taskConfig[key].icon;
- data.activeValue = this.taskConfig[key].activevalue;
- data.isDouble = this.taskConfig[key].isdouble;
- data.videoTimes = this.taskConfig[key].videotimes;
- if (serverData) {
- data.giftType = serverData.type;
- data.num = serverData.num;
- data.isReceiveSingle = serverData.isReceiveSingle;
- data.isReceiveDouble = serverData.isReceiveDouble;
- } else {
- data.giftType = 'money';
- data.num = 0;
- data.isReceiveSingle = false;
- data.isReceiveDouble = false;
- }
- this.taskData.activitys.push(data);
- }
- }
- this.setList();
- // this.test();
- }
- private test() {
- this.activityNum = 80;
- this.taskData.yesterdayIsReceive = true;
- if (this.taskData.yesterdayIsReceive) {
- this.repairNode.node.active = true;
- this.repairNode.play();
- }
- }
- /**任务列表 */
- private setList() {
- this.listData = [];
- let tempArr = this.taskData.tasks.concat();
- let tempHasArr = [];
- let tempUnFinished = [];
- for (let i = 0; i < tempArr.length; i++) {
- if (tempArr[i].serverCount >= tempArr[i].count1 && !tempArr[i].isReceive1 || tempArr[i].serverCount >= tempArr[i].count2 && !tempArr[i].isReceive2) {
- this.listData.push(tempArr[i]);
- } else if (tempArr[i].isReceive2 && tempArr[i].isReceive1) {
- tempHasArr.push(tempArr[i]);
- } else {
- tempUnFinished.push(tempArr[i]);
- }
- }
- // !this.listData.length && (this.taskData.hasReceived = false);
- this.listData = this.listData.concat(tempUnFinished).concat(tempHasArr);
- this.list.numItems = this.taskData.tasks.length;
- }
- private myTween;
- private setActivity() {
- this._activityNum = DataSystem.getData(TaskData).activityNum;
- this.activityLabel.string = this._activityNum + '';
- this.animation.play();
- }
- private set activityNum(value: number) {
- if (DataSystem.getData(TaskData).activityNum != value) {
- DataSystem.getData(TaskData).activityNum = value;
- }
- if (this._activityNum != value) {
- this._activityNum = value;
- this.activityLabel.string = this._activityNum + '';
- this.progress.progress = this._activityNum / this.maxActiveValue;
- }
- }
- /**
- * 当列表项渲染
- */
- public onListRender(item: Node, index: number) {
- item.getComponent(TaskItem).onDataChange(this.listData[index], this.targetNode, this.effectNode);
- }
- }
|