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 = `每日任务 最终奖励 (${alreadyGetCount}/${this.degree.count})`; 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 () { // // } });