// Learn TypeScript: // - https://docs.cocos.com/creator/manual/en/scripting/typescript.html // Learn Attribute: // - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html // Learn life-cycle callbacks: // - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html import GameM, { AUDIO_TYPE } from "../manager/GameM"; import TaskItem from "../prefabs/TaskItem"; import UiM, { PANEL_NAME } from "../manager/UiM"; import Main from "../Main"; import AdM from "../manager/AdM"; import EffectNode from "./EffectNode"; import { MONEY_TYPE } from "../datas/CommonData"; import Gift from "./Gift"; import PoolMgr, { NODEPOOLPREFABTYPE } from "../manager/PoolMgr"; import DailyCashProAdd from "../prefabs/DailyCashProAdd"; import { STORAGE_KEY } from "../datas/GlobalStorage"; import Guide from "./Guide"; import GuideMng from "../manager/GuideMng"; import UIMng, { PanelType } from "../uiFrames/UIMng"; import { RichData } from "../datas/RichData"; import { GameController } from "../manager/GameController"; import MyExtends from "../tools/MyExtends"; import { Utils } from "../utils/Utils"; const { ccclass, property } = cc._decorator; @ccclass export default class Task extends cc.Component { @property(cc.Node) dailySel: cc.Node = null; @property(cc.Node) achieveSel: cc.Node = null; @property(cc.Node) contentDaily: cc.Node = null; @property(cc.Node) contentAchieve: cc.Node = null; @property(cc.Node) scDaily: cc.Node = null; @property(cc.Node) scAchieve: cc.Node = null; @property(cc.Node) dailyRed: cc.Node = null; @property(cc.Node) achieveRed: cc.Node = null; @property(cc.Node) dailyAward: cc.Node = null; @property(cc.Sprite) proActive: cc.Sprite = null; @property(cc.Label) labActiveNum: cc.Label = null; @property(cc.Node) box: cc.Node = null; @property(cc.Label) labDice: cc.Label = null; @property(cc.Node) richBtn: cc.Node = null; // LIFE-CYCLE CALLBACKS: // onLoad () {} index = 0 curActive = 0 /** 活跃奖励配置 */ awardCfg = null /** tween数组 */ tweenArr = [] /** 本次增加活跃值 */ addPoint = 0 private hasInit = false onLoad() { this.richBtn.active = RichData.Ins.richCfg.richmanopen == 1; } onEnable() { this.index = 0 this.dailySel.active = true this.achieveSel.active = false this.scDaily.active = true this.scAchieve.active = false this.dailyAward.active = false this.freshState() if (GameM.commonData.taskGuide == 0) { GameM.commonData.taskGuide = 1 GameM.globalStorage.setStorage(STORAGE_KEY.taskGuide, GameM.commonData.taskGuide) // UiM.Instance.guideNode.getComponent(Guide).showTask2() } //日常任务引导 this.scheduleOnce(() => { GuideMng.Ins.CheckTaskGuide8() }, 0.6) this.freshDice() } onDisable() { AdM.createInter(8); this.unschedule(this.onProAdd) } freshState() { GameM.commonData.taskRedNum = 0 GameM.commonData.dailyTaskRedNum = 0 GameM.commonData.achieveTaskRedNum = 0 if (this.hasInit) { let cfg = GameM.commonData.achieveCft let item let s let keys = Object.keys(GameM.commonData.achieveCft) for (var i = 0; i < keys.length; i++) { let finish = GameM.commonData.getAchieveGetData(Number(keys[i])) if (finish < cfg[keys[i]].length) { item = this.contentAchieve.getChildByName(keys[i]) s = item.getComponent(TaskItem) s.init(1, Number(keys[i]), cfg[keys[i]][finish]) s.updateSibling() } } cfg = GameM.commonData.taskCft keys = Object.keys(GameM.commonData.taskCft) for (var i = 0; i < keys.length; i++) { let finish = GameM.commonData.getDailyGetData(Number(keys[i])) if (finish < cfg[keys[i]].length) { item = this.contentDaily.getChildByName(keys[i]) s = item.getComponent(TaskItem) s.init(0, Number(keys[i]), cfg[keys[i]][finish]) s.updateSibling() } } this.freshActive() UiM.Instance.hallNode.getComponent(Main).checkTaskRed() } } async init() { //成就 let keys = Object.keys(GameM.commonData.achieveCft) let cfg = GameM.commonData.achieveCft let pre = await Utils.loadResPromise('prefabs/TaskItem') let item let s for (var i = 0; i < keys.length; i++) { item = cc.instantiate(pre) item.name = keys[i] s = item.getComponent(TaskItem) let finish = GameM.commonData.getAchieveGetData(Number(keys[i])) if (finish < cfg[keys[i]].length) { s.init(1, Number(keys[i]), cfg[keys[i]][finish]) this.contentAchieve.addChild(item) } } //每日任务 cfg = GameM.commonData.taskCft keys = Object.keys(GameM.commonData.taskCft) //console.log("cfg:",cfg) //console.log("cfgkeys:",keys) for (var i = 0; i < keys.length; i++) { item = cc.instantiate(pre) item.name = keys[i] s = item.getComponent(TaskItem) let finish = GameM.commonData.getDailyGetData(Number(keys[i])) if (finish < cfg[keys[i]].length) { s.init(0, Number(keys[i]), cfg[keys[i]][finish]) this.contentDaily.addChild(item) } else { s.init(0, Number(keys[i]), cfg[keys[i]][cfg[keys[i]].length - 1]) this.contentDaily.addChild(item) } } this.freshActive() UiM.Instance.hallNode.getComponent(Main).checkTaskRed() this.hasInit = true } freshRed() { if (GameM.commonData.dailyTaskRedNum > 0) { this.dailyRed.active = true } else { this.dailyRed.active = false } if (GameM.commonData.achieveTaskRedNum > 0) { this.achieveRed.active = true } else { this.achieveRed.active = false } } start() { } async freshActive() { this.awardCfg = GameM.commonData.taskAwardCft this.labActiveNum.string = GameM.commonData.roleData.activeNum.toString() this.curActive = GameM.commonData.roleData.activeNum this.proActive.fillRange = GameM.commonData.roleData.activeNum / this.awardCfg[this.awardCfg.length - 1].point for (var i = 0; i < this.box.childrenCount; i++) { let b = this.box.getChildByName(`box${i + 1}`) b.getComponentInChildren(cc.Label).string = this.awardCfg[i].point.toString() // b.x = this.proActive.totalLength * this.awardCfg[i].point / this.awardCfg[this.awardCfg.length - 1].point let sp = b.getChildByName('iconCan').getComponent(cc.Sprite) let lab = b.getChildByName('labNum') let str = '' let qipao = b.getChildByName('qipao') let tip = qipao.getChildByName('labTip').getComponent(cc.Label) tip.string = this.awardCfg[i].tip if (this.awardCfg[i].type instanceof Array) { let curLevelCfg = null for (var j = 0; j < this.awardCfg[i].type.length; j++) { if (GameM.commonData.maxCarLevel <= this.awardCfg[i].type[j].level) { curLevelCfg = this.awardCfg[i].type[j] break } } //已领取汽车奖励不会再变 if (GameM.commonData.roleData.activeGet[i] != 0) { str = 'carPic/side/side_' + GameM.commonData.roleData.activeGet[i] } else { str = 'carPic/side/side_' + curLevelCfg.min } sp.spriteFrame = null cc.loader.loadRes(str, cc.SpriteFrame, (err, assets) => { if (err) { cc.error(err); return; } sp.spriteFrame = assets; // sp.node.scale = 0.4 }) if (curLevelCfg.light == 1) { sp.node.color = cc.Color.WHITE } else { sp.node.color = cc.color(45, 45, 45, 255) } lab.getComponent(cc.Label).string = curLevelCfg.show } else { sp.node.scale = 1 sp.node.color = cc.Color.WHITE let awardName = '' switch (this.awardCfg[i].type) { case MONEY_TYPE.speedCard: str = 'gift/iconJiasuka' awardName = '加速券' //sp.node.scale = 0.65 sp.node.scale = 0.9 break case MONEY_TYPE.turnTableCard: str = 'gift/iconZhuanpanka' sp.node.scale = 0.9 awardName = '转盘卡' break case MONEY_TYPE.treasureCard: str = 'gift/iconDuobaoquan' awardName = '夺宝券' sp.node.scale = 0.9 break case MONEY_TYPE.redMoney: str = 'gift/redMoney' awardName = '红包币' sp.node.scale = 0.9 break } sp.spriteFrame = await Utils.loadResPromise(str, cc.SpriteFrame) lab.getComponent(cc.Label).string = `${awardName} * ${this.awardCfg[i].num}` } if (GameM.commonData.roleData.activeNum >= this.awardCfg[i].point) { if (GameM.commonData.roleData.activeGet[i] != 0) { b.getChildByName('iconGet').active = true lab.active = false if (this.tweenArr[i]) { this.tweenArr[i].stop() } sp.node.angle = 0 } else { b.getChildByName('iconGet').active = false lab.active = true if (!this.tweenArr[i]) { let curScale = sp.node.scale let tween = cc.tween(sp.node) .to(0.2, { angle: 15, scale: curScale * 1.2 }) .to(0.4, { angle: -15, scale: curScale * 1 }) .to(0.4, { angle: 15, scale: curScale * 1.2 }) .to(0.2, { angle: 0, scale: curScale * 1 }) .delay(2) .union() .repeatForever() .start() this.tweenArr[i] = tween } GameM.commonData.taskRedNum++ } } else { b.getChildByName('iconGet').active = false lab.active = true if (this.tweenArr[i]) { this.tweenArr[i].stop() } sp.node.angle = 0 } } } clickGetBox(evt) { GameM.audioM.playEffect(AUDIO_TYPE.button) let qipao = evt.target.getChildByName('qipao') qipao.active = true this.scheduleOnce(() => { qipao.active = false }, 2) switch (evt.target.name) { case 'box1': this.getAwardByType(0, evt.target) break case 'box2': this.getAwardByType(1, evt.target) break case 'box3': this.getAwardByType(2, evt.target) break } } getAwardByType(index, target) { let curCfg = this.awardCfg[index] if (GameM.commonData.roleData.activeNum >= curCfg.point) { if (GameM.commonData.roleData.activeGet[index] == 0) { if (curCfg.type instanceof Array) { if (UiM.Instance.hallNode.getComponent(Main).getEmptySpace() == '') { EffectNode.instance.PlayTip("位置已满,请空出位置再领"); return } let carlevel = 0 let curLevelCfg = null for (var j = 0; j < curCfg.type.length; j++) { if (GameM.commonData.maxCarLevel <= curCfg.type[j].level) { curLevelCfg = curCfg.type[j] break } } if (curLevelCfg.light == 1) { carlevel = curLevelCfg.min } else { carlevel = Math.max(curLevelCfg.min, GameM.commonData.maxCarLevel - curLevelCfg.fix) } GameM.commonData.roleData.activeGet[index] = carlevel UiM.Instance.hallNode.getComponent(Main).getTaskAwardCar(carlevel) } else { GameM.commonData.roleData.activeGet[index] = 1 UiM.Instance.giftNode.active = true UiM.Instance.giftNode.x = 0 let gift = UiM.Instance.giftNode.getComponent(Gift) gift.init(curCfg.type, String(curCfg.num), null, false, 0) } AdM.onSendEvent(`TaskAward${index + 1}`, `活跃第${index + 1}档奖励领取`, 'TaskAward') target.getChildByName('iconGet').active = true target.getChildByName('labNum').active = false GameM.commonData.taskRedNum-- if (this.tweenArr[index]) { this.tweenArr[index].stop() } GameM.commonData.updateRoleData() } else { EffectNode.instance.PlayTip('奖励已领取') } } else { EffectNode.instance.PlayTip('活力值不足') } } /** 增加活跃动画 */ addActiveNum(num) { this.addPoint = num let addGold = PoolMgr.Inst.getPoolPrefab(NODEPOOLPREFABTYPE.DailyCashProAdd); addGold.getComponent(DailyCashProAdd).init(`+${this.addPoint}`); this.labActiveNum.node.addChild(addGold); if (this.curActive < GameM.commonData.roleData.activeNum) { this.schedule(this.onProAdd, 0.03) } } onProAdd() { if (this.curActive < GameM.commonData.roleData.activeNum) { this.curActive++ this.labActiveNum.string = this.curActive.toString() this.proActive.fillRange = this.curActive / this.awardCfg[this.awardCfg.length - 1].point } else { this.unschedule(this.onProAdd) this.freshState() } } /** 刷新骰子个数 */ freshDice() { this.labDice.string = RichData.Ins.diceTotalNum.toString() } /** 前去取经 */ clickRichMan() { GameM.audioM.playEffect(AUDIO_TYPE.button) AdM.onSendEvent(`gotoRichMan`, `前往取经`, 'task') UIMng.Ins.AsyncGetPanel(PanelType.RichPanel, (panel) => { panel.OnEnter(); }); //UIMng.Ins.GetPanel(PanelType.RichPanel).OnEnter(); this.node.active = false } clickDaily() { GameM.audioM.playEffect(AUDIO_TYPE.button) this.dailySel.active = true this.achieveSel.active = false this.scDaily.active = true this.dailyAward.active = true this.scAchieve.active = false this.index = 0 } clickAchieve() { GameM.audioM.playEffect(AUDIO_TYPE.button) this.dailySel.active = false this.achieveSel.active = true this.scDaily.active = false this.dailyAward.active = false this.scAchieve.active = true this.index = 1 } clickClose() { GameM.audioM.playEffect(AUDIO_TYPE.button) this.node.active = false } // update (dt) {} /**播放获取骰子动画*/ PlayDiceEft() { //let eft = new cc.Node("eft"); //let eftimg = eft.addComponent(cc.Sprite); //cc.loader.loadRes("xiyou/icon/reward30001" , cc.SpriteFrame, (error, assets) => { // if (error != null) { // return; // } // eftimg.spriteFrame = assets; //}); //eft.parent = GameController.Ins.Canvas; let endPos = MyExtends.convetOtherNodeSpaceAR(this.labDice.node, GameController.Ins.Canvas); //eft.setPosition(startpos); //cc.tween(eft) // .to(0.5, { position: endPos }) // .delay(0.3) // .call(() => { // eft.destroy(); // // this.freshDice(); // }) // .start(); EffectNode.instance.PlayCoinAnim(6, 6, cc.v2(0, -300), true, endPos); setTimeout(() => { this.labDice.node.runAction(cc.sequence(cc.scaleTo(0.15, 1.1), cc.scaleTo(0.15, 1))); this.freshDice(); }, 1000); console.log("------------------PlayDiceEft"); GameM.audioM.playEffect(AUDIO_TYPE.sutraitemfly); } }