import Common from "../common/Common"; import ViewBase from "./ViewBase"; import UserInfo from "../UserInfo"; import LevelInfo from "../Levellnfo"; import UIManager from "../manager/UIManager"; import Define from "../common/Define"; import ParticleEffectManager from "../manager/ParticleEffectManager"; import WXHelper from "../common/WXHelper"; import GameManager from "../manager/GameManager"; // Learn TypeScript: // - [Chinese] http://docs.cocos.com/creator/manual/zh/scripting/typescript.html // - [English] http://www.cocos2d-x.org/docs/creator/manual/en/scripting/typescript.html // Learn Attribute: // - [Chinese] http://docs.cocos.com/creator/manual/zh/scripting/reference/attributes.html // - [English] http://www.cocos2d-x.org/docs/creator/manual/en/scripting/reference/attributes.html // Learn life-cycle callbacks: // - [Chinese] http://docs.cocos.com/creator/manual/zh/scripting/life-cycle-callbacks.html // - [English] http://www.cocos2d-x.org/docs/creator/manual/en/scripting/life-cycle-callbacks.html const {ccclass, property} = cc._decorator; @ccclass export default class UpgradeViewCtr extends ViewBase { @property(cc.Label) textDesc1: cc.Label = null; @property(cc.Label) textDesc2: cc.Label = null; @property(cc.Label) textUpgradeDesc: cc.Label = null; @property(cc.Label) textUpgradeSpend: cc.Label = null; //btns -------- 开始 @property(cc.Node) btn_speed: cc.Node = null; @property(cc.Node) btn_gold: cc.Node = null; @property(cc.Node) btn_fire: cc.Node = null; @property(cc.Node) btn_offline: cc.Node = null; @property(cc.Node) btn_upgrade: cc.Node = null; @property(cc.Node) btn_vedio: cc.Node = null; @property(cc.Node) btn_share: cc.Node = null; @property(cc.Node) nodeSpeedDark: cc.Node = null; @property(cc.Node) nodeGoldDark: cc.Node = null; @property(cc.Node) nodeFireDark: cc.Node = null; @property(cc.Node) nodeOfflineDark: cc.Node = null; @property(cc.Node) nodeBgs: cc.Node = null; @property(cc.Node) nodebtnColors: cc.Node = null; @property(cc.Node) nodeGuideArrow: cc.Node = null; @property(cc.Label) textGuideDesc: cc.Label = null; @property(cc.Node) node_addHome: cc.Node = null; private curTag:string = "btn_speed"; isClickShare:boolean = false; private upgradeSpeedSpendGold:number = 0; private upgradeFireSpendGold:number = 0; private upgradeGoldSpendGold:number = 0; private upgradeOfflineSpendGold:number = 0; //刷新UI refreshView(isFristRefresh:boolean = false){ console.log("刷新ui。。。。。。。。。。。。"); this.node.children[0].stopAllActions(); this.node.children[0].position = new cc.Vec2(320,-180) this.node.children[0].runAction(cc.moveTo(0.3,new cc.Vec2(320,158))) this.isClickShare = false; this.upgradeFireSpendGold = LevelInfo.getUpgradeNeedGold(UserInfo.firePower + 1); this.upgradeSpeedSpendGold = LevelInfo.getUpgradeNeedGold(UserInfo.bulletShootMaxCount - 2) this.upgradeGoldSpendGold = LevelInfo.getUpgradeNeedGold(UserInfo.goldDropLevel + 1); this.upgradeOfflineSpendGold = LevelInfo.getUpgradeNeedGold(UserInfo.offLineLevel + 1); this.onClick(this.curTag) this.handlerGuideArrow(); UIManager.getInstance().executeEvent(Define.viewBattle,"hidePrompt") if(Common.curLevel == 4 && UserInfo.showAddHomeTag == 0){ UserInfo.saveShowAddHome(); UserInfo.showAddHomeTag = 1 this.node_addHome.active = true this.node_addHome.runAction(cc.repeatForever(cc.sequence(cc.moveBy(0.2,new cc.Vec2(0,5)),cc.moveBy(0.2,new cc.Vec2(0,-5))))) }else{ this.node_addHome.active = false; } } hideView(){ WXHelper.showBannder(true) super.hideView() } //点击点击事件 addEvent(){ Common.addClickEvent(this.btn_speed,this.onClick.bind(this)); Common.addClickEvent(this.btn_fire,this.onClick.bind(this)); Common.addClickEvent(this.btn_gold,this.onClick.bind(this)); Common.addClickEvent(this.btn_offline,this.onClick.bind(this)); Common.addClickEvent(this.btn_upgrade,this.onClick.bind(this)); Common.addClickEvent(this.btn_vedio,this.onClickVideo.bind(this)); Common.addClickEvent(this.btn_share,this.onClickShare.bind(this)); } onClickVideo(tag:string){ // console.log("onClickVideo") // WXHelper.showVideo(function(state){ // if(state == 1){ // if(state == 1 || state == "1"){ // this.upgradeSkills() // }else{ // console.log("state = " + state) // } // } // }.bind(this)) } onClickShare(tage:string){ // console.log("onClickShare") // this.isClickShare = true // GameManager.instance.wxHelper.shareAppMessage(""); } onClick(tag:string){ if(tag == "btn_upgrade"){ }else{ this.curTag = tag; } this.refreshButtonStates(tag == "btn_upgrade"); } upgradeSkills(){ if(this.curTag == "btn_speed"){ UserInfo.saveBulletShootMaxCount(1); }else if(this.curTag == "btn_fire"){ UserInfo.saveFirePower(); }else if(this.curTag == "btn_gold"){ UserInfo.saveDropGoldLevel(); }else if(this.curTag == "btn_offline"){ UserInfo.saveOffLineLevel(); } this.refreshButtonStates(false); } //刷新按键的状态 refreshButtonStates(isUpgrade:boolean){ for (let index = 0; index < this.nodeBgs.children.length; index++) { this.nodeBgs.children[index].active = false; } let tempindex = 0; let curLevel:number = 0; let spendGold:number = 0; let isUpgradeSucceed:boolean = false let effectColor:cc.Color = null; if(this.curTag == "btn_speed"){ curLevel = UserInfo.bulletShootMaxCount - 2; spendGold = LevelInfo.getUpgradeNeedGold(curLevel); this.upgradeSpeedSpendGold = spendGold this.textDesc1.string = "开火速度"; console.log("spendGold = "+spendGold) console.log("UserInfo.curGold = "+UserInfo.curGold) if(isUpgrade && UserInfo.curGold >= spendGold){ UserInfo.saveGoldData(spendGold *-1) //减少金币数量 UserInfo.saveBulletShootMaxCount(1); isUpgradeSucceed = true effectColor = new cc.Color(255,90,0); } this.textDesc2.string = (UserInfo.bulletShootMaxCount + 1).toString() + "发/秒" }else if(this.curTag == "btn_fire"){ curLevel = UserInfo.firePower + 1 spendGold = LevelInfo.getUpgradeNeedGold(curLevel); this.upgradeFireSpendGold = spendGold this.textDesc1.string = "火力"; if(isUpgrade && UserInfo.curGold >= spendGold){ UserInfo.saveGoldData(spendGold *-1) //减少金币数量 UserInfo.saveFirePower(); isUpgradeSucceed = true effectColor = new cc.Color(202,9,232); } this.textDesc2.string = ((UserInfo.firePower)*10 + 100) +"%"; tempindex = 1 }else if(this.curTag == "btn_gold"){ curLevel = UserInfo.goldDropLevel + 1 spendGold = LevelInfo.getUpgradeNeedGold(curLevel); this.upgradeGoldSpendGold = spendGold this.textDesc1.string = "金币"; if(isUpgrade && UserInfo.curGold >= spendGold){ UserInfo.saveGoldData(spendGold *-1) //减少金币数量 UserInfo.saveDropGoldLevel(); isUpgradeSucceed = true effectColor = new cc.Color(9,122,255); } this.textDesc2.string = ((UserInfo.goldDropLevel)*10 + 100) +"%"; tempindex = 2 }else if(this.curTag == "btn_offline"){ curLevel = UserInfo.offLineLevel + 1 spendGold = LevelInfo.getUpgradeNeedGold(curLevel); this.upgradeOfflineSpendGold = spendGold this.textDesc1.string = "离线"; if(isUpgrade && UserInfo.curGold >= spendGold){ UserInfo.saveGoldData(spendGold *-1) //减少金币数量 UserInfo.saveOffLineLevel(); isUpgradeSucceed = true effectColor = new cc.Color(255,220,3); } this.textDesc2.string = (UserInfo.offLineLevel*10 + 100) +"%"; tempindex = 3 } console.log("curLevel =============" + curLevel); let isShowVideo:boolean = false if(curLevel-1 > 0 && (curLevel-1)%10 == 0 && WXHelper.isLoadVideoSuccessful){ this.btn_vedio.stopAllActions() this.btn_vedio.active = true isShowVideo = true Common.actionLeftRightRotate(this.btn_vedio,0.15,18,3) }else{ this.btn_vedio.active = false } if(curLevel-1 > 0 && (curLevel-1)%4 == 0 && !isShowVideo){ this.btn_share.stopAllActions() this.btn_share.active = true Common.actionLeftRightRotate(this.btn_share,0.15,18,3) }else{ this.btn_share.active = false } if(isUpgrade && UserInfo.curGold < spendGold){ Common.showPrompt("金币不足"); this.btn_upgrade.stopAllActions(); this.btn_upgrade.rotation = 0; } if(UserInfo.curGold >= spendGold){ this.btn_upgrade.stopAllActions() Common.actionLeftRightRotate(this.btn_upgrade) }else{ this.btn_upgrade.stopAllActions(); this.btn_upgrade.rotation = 0; } if(isUpgradeSucceed){ ParticleEffectManager.getInstance().showParticleEffect(5,new cc.Vec2(40,0),1,effectColor,this.textDesc2.node) } if(UIManager.getInstance().isShow(Define.viewMain)){ UIManager.getInstance().executeEvent(Define.viewMain); } this.textUpgradeSpend.string = Common.getShowNumber(spendGold); this.nodeBgs.children[tempindex].active = true; //修改按键的图片 let buttonSpriteFrame = this.nodebtnColors.children[tempindex].getComponent(cc.Sprite).spriteFrame; this.btn_upgrade.getComponent(cc.Sprite).spriteFrame = buttonSpriteFrame; this.nodeSpeedDark.active = false; this.nodeFireDark.active = false; this.nodeGoldDark.active = false; this.nodeOfflineDark.active = false; this.btn_fire.active = false; this.btn_gold.active = false; this.btn_offline.active = false; /* 功能开启规则 【开火速度】升级到10级的时候,开启【火力】功能 【火力】升级到2级的时候,开启【金币】功能 【金币】升级到2级的时候,开启【离线】 */ //升级到第5颗子弹才能开启下一个技能 if(UserInfo.bulletShootMaxCount > 12){ this.btn_fire.active = true; }else{ this.nodeFireDark.active = true; } if(UserInfo.firePower > 1){ this.btn_gold.active = true; }else{ this.nodeGoldDark.active = true; } if(UserInfo.goldDropLevel > 1){ this.btn_offline.active = true; }else{ this.nodeOfflineDark.active = true; } Common.curLevelGold = UserInfo.curGold; this.handlerGuideArrow(); UIManager.getInstance().refreshGoldInfo(Define.viewBattle); UIManager.getInstance().refreshGoldInfo(Define.viewMain); } //处理引导箭头 handlerGuideArrow(){ let tempNode = null; //前期引导 //引导升级速度 if(UserInfo.curLevel >= 2 && UserInfo.bulletShootMaxCount <= 3 && UserInfo.curGold >= this.upgradeSpeedSpendGold) { if(this.curTag != "btn_speed"){ tempNode = this.btn_speed; }else{ tempNode = this.btn_upgrade; } }else if(UserInfo.bulletShootMaxCount >= 12 && this.btn_fire.active && UserInfo.firePower == 0 && UserInfo.curGold >= this.upgradeFireSpendGold){ if(this.curTag != "btn_fire"){ tempNode = this.btn_fire; }else{ tempNode = this.btn_upgrade; } }else if(UserInfo.firePower > 1 && UserInfo.goldDropLevel == 1 && UserInfo.curGold >= this.upgradeGoldSpendGold){ if(this.curTag != "btn_gold"){ tempNode = this.btn_gold; }else{ tempNode = this.btn_upgrade; } }else if(UserInfo.goldDropLevel > 1 && UserInfo.offLineLevel == 0 && UserInfo.curGold >= this.upgradeOfflineSpendGold){ if(this.curTag != "btn_offline"){ tempNode = this.btn_offline; }else{ tempNode = this.btn_upgrade; } } //后期引导 if(tempNode == null){ //提示下一个等级 if(UserInfo.bulletShootMaxCount - (UserInfo.firePower+2) >= 5 && UserInfo.firePower <= 20 && UserInfo.firePower > 1 && UserInfo.curGold >= this.upgradeFireSpendGold){ if(this.curTag != "btn_fire"){ tempNode = this.btn_fire; }else{ tempNode = this.btn_upgrade; } }else if(UserInfo.firePower - UserInfo.goldDropLevel >= 10 && UserInfo.goldDropLevel <= 20 && UserInfo.curGold >= this.upgradeGoldSpendGold){ if(this.curTag != "btn_gold"){ tempNode = this.btn_gold; }else{ tempNode = this.btn_upgrade; } }else if(UserInfo.goldDropLevel - UserInfo.offLineLevel >= 10 && UserInfo.offLineLevel <= 20 && UserInfo.curGold >= this.upgradeOfflineSpendGold){ if(this.curTag != "btn_offline"){ tempNode = this.btn_offline; }else{ tempNode = this.btn_upgrade; } } } /* 在全部功能开启的情况下 【开火速度】与【火力】等级相差5级的时候,提示提升等级较低的 【金币】【离线】与【火力】相差10级的时候,提示升级等级较低的一个功能 若【金币】【离线】等级相同,则优先提示【金币升级】 只有点击功能分页时,不显示文字,每次指引升级按钮时,都显示文字描述 */ /* 增加子弹数量 增加子弹威力 获得更多金币 提升离线奖励 */ console.log(tempNode) if(tempNode != null){ if(tempNode == this.btn_upgrade){ if(this.curTag == "btn_speed"){ this.textGuideDesc.string = "增加子弹数量" }else if(this.curTag == "btn_fire"){ this.textGuideDesc.string = "增加子弹威力" }else if(this.curTag == "btn_gold"){ this.textGuideDesc.string = "获得更多金币" }else if(this.curTag = "btn_offline"){ this.textGuideDesc.string = "提升离线奖励" } } else{ this.textGuideDesc.string = "" } this.nodeGuideArrow.stopAllActions(); this.nodeGuideArrow.active = true; this.nodeGuideArrow.position = new cc.Vec2(tempNode.position.x,tempNode.position.y + 150); let x = this.nodeGuideArrow.position.x; let y = this.nodeGuideArrow.position.y; let action = cc.sequence(cc.moveTo(0.5,new cc.Vec2(x,y - 20)),cc.moveTo(0.5,new cc.Vec2(x,y + 10))) this.nodeGuideArrow.runAction(cc.repeatForever(action)); }else{ this.nodeGuideArrow.stopAllActions(); this.nodeGuideArrow.active = false; } } //额外的事件调用 executeEvent(eventTag:string = "defualt"){ //在升级界面点击分享 if(this.isClickShare){ this.isClickShare = false this.upgradeSkills(); } } }