123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234 |
- const QuestApi = require('../net/QuestApi');
- const DWTool = require("../utils/DWTool");
- const QuestDailyMissionType = require("../utils/GameEnum").QuestDailyMissionType;
- cc.Class({
- extends: cc.Component,
- properties: {
- questWrap: {
- tooltip: '每日任务容器',
- default: null,
- type: cc.Node
- },
- questBtns: [cc.Node],
- userDegreeRichText: {
- tooltip: '用户当前活跃度',
- default: null,
- type: cc.RichText
- },
- _userDegree: 0,
- userDegree: {
- get () {
- return this._userDegree;
- },
- set (value) {
- this._userDegree = value;
- // 设置用户当前活跃度
- // this.actProgress.progress = data / 100
- // this.userDegreeLabel.string = data
- }
- },
- giftFrames: {
- tooltip: '奖励图片素材',
- default: [],
- type: [cc.SpriteFrame]
- },
- questItem: cc.Prefab,
- resetTimeLabel: cc.Label,
- isLoadData: {
- default: false,
- visible: false
- }
- },
- onLoad () {
- this.userDegree = 0;
- this.dailyDegreeList = [];
- this.giftMap = ['diamond', 'coin', 'ticket'];
- },
- init (quest) {
- this.quest = quest;
- this.loadNetworkData();
- },
- loadNetworkData() {
- QuestApi.getDailyTask((responseData) => {
- this.dailyDegreeList = responseData.dailyDegreeList.sort((a, b) => {
- return a.count - b.count
- });
- this.degree = this.dailyDegreeList[0];
- this.dailyTaskList = responseData.dailyTaskList;
- this.userDegree = parseInt(responseData.userDegree);
- this._setUserDegree();
- this._setTaskList();
- this.updateTime = responseData.updateTime;
- this.isLoadData = true;
- } , (error) => {
- console.log('dailytask error' + error);
- });
- },
- /**
- * 渲染每日任务列表
- */
- _setTaskList () {
- this.questWrap.removeAllChildren();
- this.dailyTaskList.forEach((item, index) => {
- let questItem = cc.instantiate(this.questItem);
- this.questWrap.addChild(questItem);
- questItem.getComponent('QuestDailyItem').init(this, item, index);
- })
- },
- /**
- * 设置活跃度奖励进度条
- */
- _setUserDegree () {
- var canGet = false;
- var alreadyGetCount = 0;
- for (let i = 0; i < this.dailyTaskList.length; ++i) {
- let dailyTask = this.dailyTaskList[i];
- if (dailyTask.state == QuestDailyMissionType.AlreadyGet){
- alreadyGetCount++;
- }
- }
- if (alreadyGetCount >= this.degree.count) {
- canGet = true;
- }
- this.userDegreeRichText.string = `<b><outline color=#2E2E2E width=2>每日任务 最终奖励 </outline></b><size=18><outline color=#2E2E2E width=2>(${alreadyGetCount}/${this.degree.count})</outline></size>`;
- this.questBtns.forEach(n => {
- n.active = false;
- });
- let btn;
- if (this.degree.state == QuestDailyMissionType.NoFinished) {
- btn = this.questBtns[0];
- } else if (this.degree.state == QuestDailyMissionType.CanGain) {
- if (canGet) {
- btn = this.questBtns[1];
- } else {
- btn = this.questBtns[0];
- }
- } else {
- btn = this.questBtns[2];
- }
- btn.active = true;
- let countNode = cc.find('/awardNode/count_label', btn);
- let spriteNode = cc.find('/awardNode/sprite', btn);
- let awardLabelNode = cc.find('/awardLabel', btn);
- var awardString = '奖励';
- if (canGet) {
- awardString = '获得';
- }
- let _count = 0;
- let _type = '';
- let _sprite = null;
- this.giftMap.forEach((value, index) => {
- if(this.degree[value] > 0) {
- _count = this.degree[value];
- _type = value;
- _sprite = this.giftFrames[index];
- }
- });
- if (spriteNode) {
- spriteNode.getComponent('cc.Sprite').spriteFrame = _sprite;
- }
- if (countNode) {
- countNode.getComponent('cc.Label').string = `${DWTool.coinParseNoFixed(_count)}`;
- }
- if (awardLabelNode) {
- awardLabelNode.getComponent('cc.Label').string = awardString;
- }
- },
- updateUserDegree() {
- this._setUserDegree();
- },
- /**
- * 领取每日任务最终奖励
- */
- handleGiftBtn () {
- // state = 0, 可领取状态
- if(this.degree.state == QuestDailyMissionType.CanGain) {
- this.questBtns[1].interactable = false;
- QuestApi.postGetDailyDegreeReward(this.degree.count, (res) => {
- this.questBtns[1].interactable = true;
- // 更新全局userInfo
- this.quest.updateUserInfo(this.degree.coin, this.degree.diamond, this.degree.ticket);
- // state = 2, 已领取状态
- this.degree.state = QuestDailyMissionType.AlreadyGet;
- this.questBtns.forEach(n => {
- n.active = false;
- });
- this.questBtns[2].active = true;
- // 显示动画
- setTimeout(() => {
- this.quest.showActGift({
- ticket: this.degree.ticket,
- diamond: this.degree.diamond,
- coin: this.degree.coin
- })
- }, 200);
- if (res.isCancel) {
- let isCancel = res.isCancel == 1 ? true : false;
- GameEvent.fire('quest_daily_notice', isCancel);
- }
- }, (errCode, errMsg) => {
- this.questBtns[1].interactable = true;
- // 领取失败
- GameGlobal.commonAlert.showCommonErrorAlert("领取奖励失败");
- });
- }
- },
- update(dt) {
-
- if (this.updateTime == undefined) {
- return;
- }
-
- if (this.isLoadData == true) {
- var curTimestamp = parseInt(new Date().getTime());
- if ((this.updateTime - curTimestamp) > 0) {
- this.resetTimeLabel.string = `每日任务重置:${DWTool.calculateTimeString((this.updateTime - curTimestamp) / 1000)}`;
- } else {
- this.isLoadData = false;
- this.loadNetworkData();
- }
- }
- }
- // start () {
- //
- // }
- });
|