123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351 |
- const Api = require('../net/Api');
- const DWTool = require("../utils/DWTool");
- const TapTapTool = require("../utils/TapTapTool");
- const itemList = require('../data/item');
- const GameModule = require("../utils/GameModule");
- const GameNotificationKey = require('../utils/GameEnum').GameNotificationKey;
- const QuestMainMissionType = require("../utils/GameEnum").QuestMainMissionType;
- cc.Class({
- extends: cc.Component,
- properties: {
- questNode: cc.Node,
- questBtns: [cc.Node],
- starNode: {
- tooltip: '星星节点',
- default: [],
- type: [cc.Node]
- },
- starFrames: {
- tooltip: '星星图片素材',
- default: [],
- type: [cc.SpriteFrame]
- },
- progressLabel: {
- tooltip: '奖励数量',
- default: null,
- type: cc.Label
- },
- progressBar: cc.ProgressBar,
- questTitle: {
- tooltip: '任务标题',
- default: null,
- type: cc.Label
- },
- qusetMsg: {
- tooltip: '任务说明',
- default: null,
- type: cc.Label
- }
- },
- onLoad () {
- this.giftMap = ['diamond', 'coin', 'ticket'];
- },
- start () {
- },
- init (parent, tasks, sn, questIndex) {
- this.parent = parent;
- this.quest = parent.quest;
- this.tasks = tasks;
- this.questIndex = questIndex;
- sn = this.sn = parseInt(sn);
- // 设置当前任务等级内容
- this._setTaskItem(sn);
- },
- _setTaskItem (sn) {
- let task = this.task = this.tasks.find(n => {
- if(sn == 0) {
- return n.sn == 1;
- } else {
- return n.sn == sn;
- }
- })
- if(sn == this.tasks.length && task.status == 2) {
- this._setMaxItem();
- } else {
- let level = sn == 0 ? 0 : sn - 1;
- let nameLevelMap = ['I', 'II', 'III', 'IV', 'V','Ⅵ','Ⅶ','Ⅷ','Ⅸ','Ⅹ'];
- // 设置当前任务标题
- this.questTitle.string = `${task.name}(${nameLevelMap[level]})`;
- // 设置当前任务说明内容
- let aimValue = TapTapTool.goldStrToClass(task.aimValue);
- let totalAimValue = TapTapTool.goldStrToClass(task.totalAimValue);
- if (aimValue.n == undefined && totalAimValue.n == undefined) {
- this.qusetMsg.string = task.msg.replace('${num}', totalAimValue);
- // 设置任务阶段进度条
- let taskAimValue = aimValue > totalAimValue ? totalAimValue : aimValue;
- this._setProgress(taskAimValue, task.totalAimValue);
- } else {
- this.qusetMsg.string = task.msg.replace('${num}', TapTapTool.parseToString(totalAimValue));
- // 设置任务阶段进度条
- let taskAimValue = TapTapTool.compare(aimValue, totalAimValue) ? task.totalAimValue : task.aimValue;
- this._setProgress(taskAimValue, task.totalAimValue);
- }
- // 设置当前任务星级
- this._setStarLevel(level);
- this.giftItem = Object.assign({
- itemCount: task.itemCount
- }, itemList.find(n => {
- return n.id == task.itemId
- }));
- // 设置任务领取按钮
- this._setGiftBtn(task.status);
- }
- },
- _setMaxItem () {
- let task = this.tasks[4];
- // 设置当前任务标题
- this.questTitle.string = `${task.name}(V)`;
- // 设置当前任务星级
- this._setStarLevel(this.tasks.length);
- // 设置当前任务说明内容
- let aimValue = TapTapTool.goldStrToClass(task.aimValue);
- let totalAimValue = TapTapTool.goldStrToClass(task.totalAimValue);
- if (aimValue.n == undefined && totalAimValue.n == undefined) {
- this.qusetMsg.string = task.msg.replace('${num}', totalAimValue);
- // 设置任务阶段进度条
- let taskAimValue = aimValue > totalAimValue ? totalAimValue : aimValue;
- this._setProgress(taskAimValue, task.totalAimValue);
- } else {
- this.qusetMsg.string = task.msg.replace('${num}', TapTapTool.parseToString(totalAimValue));
- // 设置任务阶段进度条
- let taskAimValue = TapTapTool.compare(aimValue, totalAimValue) ? task.totalAimValue : task.aimValue;
- this._setProgress(taskAimValue, task.totalAimValue);
- }
- // 设置任务领取按钮
- this._setGiftBtn(QuestMainMissionType.AlreadyGet);
- },
- /**
- * 领取按钮点击
- */
- handleGiftBtn () {
- this.questBtns[1].interactable = false;
- Api.httpPost({
- url: "/task/gain.do",
- data: {
- taskId: this.task.taskId,
- sn: this.task.sn
- },
- success: (res) => {
- this.questBtns[1].interactable = true;
- GameModule.audioMng.playGetAward();
- if (res.clickMt) {
- let clickMt = TapTapTool.goldStrToClass(res.clickMt);
- if (GameModule.userInfo.perpetualClickMt.n != clickMt.n || GameModule.userInfo.perpetualClickMt.e != clickMt.e) {
- GameModule.userInfo.perpetualClickMt = clickMt;
- GameEvent.fire(GameNotificationKey.UpBuildingLevel);
- }
- }
- if (res.mt) {
- let mt = TapTapTool.goldStrToClass(res.mt);
- if (GameModule.userInfo.perpetualMt.n != mt.n || GameModule.userInfo.perpetualMt.e != mt.e) {
- GameModule.userInfo.perpetualMt = mt;
- GameModule.userInfo.refreshSecondText();
- }
- }
- let updatRes = {
- coin: '0',
- diamond: 0,
- ticket: 0
- }
- if(this.giftItem.id == 10001) {
- updatRes.coin = this.giftItem.itemCount;
- }
- if(this.giftItem.id == 10002) {
- updatRes.diamond = this.giftItem.itemCount;
- }
- if(this.giftItem.id == 10003) {
- updatRes.ticket = this.giftItem.itemCount;
- }
- // 更新全局userInfo
- this.quest.updateUserInfo(updatRes.coin, updatRes.diamond, updatRes.ticket);
- // 显示领取奖品动画
- // let showFrame = this.giftItem.giftFrame;
- let itemCount = TapTapTool.goldStrToClass(this.giftItem.itemCount);
- let showText = `${this.giftItem.name} x ${itemCount}`;
- if (this.giftItem.giftFrame) {
- let showFrame = this.giftItem.giftFrame;
- this.quest.showMainGift(showFrame, showText);
- }
- // 领取成功,更新当前按钮状态到下一阶段
- if(this.sn < this.tasks.length) {
- this.sn += 1;
- this._setTaskItem(this.sn);
- } else {
- this._setMaxItem();
- }
- if (res.isCancel) {
- let isCancel = res.isCancel == 1 ? true : false;
- GameEvent.fire('quest_main_notice', isCancel);
- }
- },
- fail: (errCode, errMsg) => {
- this.questBtns[1].interactable = true;
- // 领取失败
- GameGlobal.commonAlert.showCommonErrorAlert("领取奖励失败");
- }
- })
- },
- /**
- * 设置任务领取状态按钮
- * @param {number} status 任务状态[0 : 未完成, 1 : 完成可领取, 2 : 完成已领取]
- */
- _setGiftBtn (status) {
- // console.log(this.giftItem);
- this.questBtns.forEach(n => {
- n.active = false;
- });
- let btn
- // 根据状态选择按钮
- switch (status) {
- case QuestMainMissionType.NoFinished:
- btn = this.questBtns[0];
- break;
- case QuestMainMissionType.CanGain:
- btn = this.questBtns[1];
- break;
- case QuestMainMissionType.AlreadyGet:
- btn = this.questBtns[2];
- break;
- default:
- break;
- }
- btn.active = true;
- // 设置图标和数量
- if(status != QuestMainMissionType.AlreadyGet) {
- let countNode = cc.find('/awardNode/count_label', btn);
- let spriteNode = cc.find('/awardNode/sprite', btn);
- let awardLabelNode = cc.find('/awardLabel', btn);
- let awardNode = cc.find('/awardNode', btn);
- let otherNode = cc.find('/otherLabel', btn);
- var awardString = '奖励';
- if (status == QuestMainMissionType.CanGain) {
- awardString = '获得';
- }
- if (this.giftItem.id > 10002) {
- awardNode.active = false;
- otherNode.active = true;
- awardString = this.giftItem.wordInfo;
- otherNode.getComponent('cc.Label').string = `提升 ${DWTool.coinParseNoFixed(this.giftItem.itemCount)}倍`;
- } else {
- awardNode.active = true;
- otherNode.active = false;
- countNode.getComponent('cc.Label').string = `${DWTool.coinParseNoFixed(this.giftItem.itemCount)}`;
- if (this.giftItem.picId) {
- DWTool.loadResSpriteFrame(`./textures/taskItem/task_${this.giftItem.picId}`)
- .then((spriteFrame) => {
- spriteNode.getComponent('cc.Sprite').spriteFrame = spriteFrame;
- }).catch((err) => {
- console.log(err);
- });
- DWTool.loadResSpriteFrame(`./textures/item/${this.giftItem.id}`)
- .then((spriteFrame) => {
- this.giftItem.giftFrame = spriteFrame;
- }).catch((err) => {
- console.log(err);
- });
- }
- }
- awardLabelNode.getComponent('cc.Label').string = awardString;
- }
- DWTool.loadResSpriteFrame(`./textures/quest/altas/${this.task.picId}`)
- .then((spriteFrame) => {
- this.questNode.getComponent('cc.Sprite').spriteFrame = spriteFrame;
- }).catch((err) => {
- console.log(err);
- });
- },
- /**
- * 设置任务阶段进度条
- * @param {number} current 当前值
- * @param {number} total 阶段总值
- */
- _setProgress (current, total) {
- let _progress = 0;
- let newCurrent = TapTapTool.goldStrToClass(current + '');
- let newTotal = TapTapTool.goldStrToClass(total + '');
- /// 说明是正常的数字
- if (newCurrent.n == undefined && newTotal.n == undefined) {
- _progress = (newCurrent / newTotal).toFixed(1);
- this.progressBar.progress = _progress;
- this.progressLabel.string = `${current}/${total}`;
- } else {
- if (newCurrent == NaN) {
- newCurrent = {'n': 0, 'e': 0};
- }
- _progress = TapTapTool.divisionToRatio(newCurrent, newTotal).toFixed(1);
- this.progressBar.progress = _progress;
- this.progressLabel.string = `${TapTapTool.parseToString(newCurrent)}/${TapTapTool.parseToString(newTotal)}`;
- }
- },
- /**
- * 设置当前任务星级
- * @param {number} level 星级
- */
- _setStarLevel (level) {
- if (level >= 5) {
- this.starNode.forEach((node, index) => {
- if((index + 5) < level) {
- node.getComponent('cc.Sprite').spriteFrame = this.starFrames[3];
- } else {
- node.getComponent('cc.Sprite').spriteFrame = this.starFrames[2];
- }
- });
- } else {
- this.starNode.forEach((node, index) => {
- if(index < level) {
- node.getComponent('cc.Sprite').spriteFrame = this.starFrames[1];
- } else {
- node.getComponent('cc.Sprite').spriteFrame = this.starFrames[0];
- }
- });
- }
- }
- });
|