/** * 游戏 节点 */ import AudioManager from "../../Tools/AudioManager"; import GameResMgr, {soundName, uiPreName} from "../../Tools/GameResMgr"; import PlayData from "../../Tools/PlayData"; import AdsApiMgr from "../../Tools/Sdk/ads/AdsApiMgr"; import Utils from "../../Tools/Utils"; import gameStorage from "../../Tools/gameStorage"; import TipsManager from "../TipsManager"; import LevelBarSc from "./LevelBarSc"; import NumLevelUpPanelSc from "./NumLevelUpPanelSc"; import kapaiSc from "./kapaiSc"; import {TrackingManager, TrackingType} from "../../Tracking/TrackingManager"; const {ccclass, property} = cc._decorator; @ccclass export default class GameSc extends cc.Component { @property(cc.Prefab) kapaiPre:cc.Prefab = null //@property(cc.Node) //gameNode:cc.Node = null @property(cc.Node) dizuo:cc.Node = null @property(cc.Node) //用于移动卡牌 过渡节点 ,移动卡牌的时候 ,卡牌在最高层 moveNode:cc.Node = null @property(LevelBarSc) levelbarSc:LevelBarSc = null @property(cc.Node) notouch:cc.Node = null @property(cc.Node) xipaiBtn:cc.Node = null @property(cc.Node) fapaiBtn:cc.Node = null @property(cc.Node) hechengBtn:cc.Node = null dizuoState = [1,1,1,1, 1,0,0,0, 0,0,0,0] //底座状态 0未解锁,1解锁 levelNum = 0 mixlevelNum = 0 moveUp = 5 selectNodeArr = [] //选中的节点 selectIndex = -1 mubiaoIndex = -1 allNodeArr = [] posX = [-270,-210,-150,-90,-30,30,90,150,210,270] maxKaPaiNum = 10 //一个框最多放置 数量 linshijiesuo = 0 //可用于临时解锁的id linshiOperatorNum = [] //一个临时卡槽 操作一定的次数后,会关闭 time01 = 0.01 weizhigailv = 1 //gameData = null dizuoKaPaiNum = [] onLoad () { PlayData.Instance.storageGameDate = gameStorage.Instance.getCheckOutData() PlayData.Instance.guanqia = PlayData.Instance.storageGameDate[0] this.levelbarSc.jindu = PlayData.Instance.storageGameDate[1] this.notouch.active = !1 //console.log('打印进度', this.levelbarSc.jindu) this.fapaiBtn.active = !1 this.hechengBtn.active = !1 } start () { AdsApiMgr.Instance.recording_Video_Start() this.scheduleOnce(()=>{this.initGame()}, 0.6) //this.initGame() //console.log('打印关卡数据', PlayData.Instance.guanqia) } /** * 初始化 */ initGame(){ this.xipaiBtn.active = !1 this.levelNum = this.levelbarSc.levelnum[this.levelbarSc.jindu] this.mixlevelNum = this.levelNum - 4 //this.mixlevelNum = 5+5*PlayData.Instance.guanqia+PlayData.Instance.guanqia - 4 //正式版本 this.linshijiesuo = PlayData.Instance.storageGameDate[2] this.linshiOperatorNum = PlayData.Instance.storageGameDate[3] //this.linshijiesuo = 9 //this.linshiOperatorNum = [0,0,0,0,0,0,0,0,0,0,0,0] //临时卡位 for (let index = 9; index < 11; index++) { if(this.linshiOperatorNum[index] >= 0){ this.dizuoState[index] = 1 let di = cc.find('di'+index, this.dizuo) let suo = cc.find('suo', di) suo.active = !1 }else{ if(index == this.linshijiesuo){ let nextsuo = cc.find('di'+index + '/suo', this.dizuo).getComponent(cc.Sprite) cc.resources.load('kapaikuang/dikuang3', cc.SpriteFrame, (err, assert)=>{ if(err) return console.error(err) nextsuo.spriteFrame = assert as cc.SpriteFrame }) }else{ let nextsuo = cc.find('di'+index + '/suo', this.dizuo).getComponent(cc.Sprite) cc.resources.load('kapaikuang/dikuang2', cc.SpriteFrame, (err, assert)=>{ if(err) return console.error(err) nextsuo.spriteFrame = assert as cc.SpriteFrame }) } } } //console.log('打印设定的进度', this.levelbarSc.jindu) for (let index = 0; index < this.levelbarSc.jindu; index++) { this.dizuoState[5+index] = 1 } if(PlayData.Instance.storageGameDate[4].length > 0){ let kknumarr = PlayData.Instance.storageGameDate[4] for (let index = 0; index < this.dizuoState.length; index++) { const ele = this.dizuoState[index]; let di = cc.find('di'+index, this.dizuo) let kapainode = cc.find('kapainode', di) kapainode.removeAllChildren() cc.find('selectkuang', di).active = !1 if(this.dizuoState[index] == 1){ let kknum = kknumarr[index] for (let ind = 0; ind < kknum.length; ind++) { const leixing = kknum[ind]; let wenhao = !1 if(leixing == 0){ //leixing == 0 && kknum[ind+1] != 0 wenhao = !0 } this.addNewKaPai(kapainode, leixing, true, wenhao) } if(cc.find('suo', di)){ cc.find('suo', di).active = !1 } }else{ cc.find('suo', di).active = !0 } } //console.log('打印底座状态', this.dizuoState) this.scheduleOnce(()=>{ this.checkNeedXiPai() }, 0.4) }else{ for (let index = 0; index < this.dizuoState.length; index++) { const ele = this.dizuoState[index]; let di = cc.find('di'+index, this.dizuo) let kapainode = cc.find('kapainode', di) kapainode.removeAllChildren() cc.find('selectkuang', di).active = !1 //this.allNodeArr[index] = [] let kknum = [] if(this.dizuoState[index] == 1){ let cengshu = Utils.getRangeRandom(1, 2) //层数 //console.log('打印随机的层数', cengshu) for (let ind = 0; ind < cengshu; ind++) { //let leixing = Utils.getRangeRandom(this.mixlevelNum, this.levelNum - 2) //类型 let leixing = Utils.getRangeRandom(this.mixlevelNum, this.levelNum - 1) //类型 let randshu = Utils.getRangeRandom(2,4) //每层的数 for (let inde = 0; inde < randshu; inde++) { // let newnode:cc.Node = cc.instantiate(this.kapaiPre) // newnode.y = this.posY[kapainode.children.length] // newnode.parent = kapainode // let kapaisc = newnode.getComponent(kapaiSc) // kapaisc.setKaNum(leixing) this.addNewKaPai(kapainode, leixing, true) //this.allNodeArr[index].push(newnode) kknum.push(leixing) } } if(cc.find('suo', di)){ cc.find('suo', di).active = !1 } }else{ cc.find('suo', di).active = !0 } PlayData.Instance.storageGameDate[4].push(kknum) gameStorage.Instance.setCheckOutData(PlayData.Instance.storageGameDate) } } //console.log('打印底座卡牌的数据', PlayData.Instance.storageGameDate[4]) this.scheduleOnce(()=>{ this.fapaiBtn.active = !0 this.hechengBtn.active = !0 }, 0.5) } /** * 视频解锁 卡槽 */ videoJieSuoDiZuo(num){ this.dizuoState[num] = 1 this.linshiOperatorNum[num] = 0 let di = cc.find('di'+num, this.dizuo) let suo = cc.find('suo', di) suo.active = !1 if(num == 10){ this.linshijiesuo = 9 }else{ this.linshijiesuo = num + 1 } PlayData.Instance.storageGameDate[2] = this.linshijiesuo this.storageCheckOutData() if(this.dizuoState[this.linshijiesuo] == 0){ let nextsuo = cc.find('di'+(this.linshijiesuo) + '/suo', this.dizuo).getComponent(cc.Sprite) cc.resources.load('kapaikuang/dikuang3', cc.SpriteFrame, (err, assert)=>{ if(err) return console.error(err) nextsuo.spriteFrame = assert as cc.SpriteFrame }) } AudioManager.playEffect(soundName.kaikacao) } closeJieSuoDiZuo(num){ this.dizuoState[num] = 0 this.linshiOperatorNum[num] = -1 let suo = cc.find('di'+ num + '/suo', this.dizuo).getComponent(cc.Sprite) suo.node.active = !0 let kuangpath = '' if(num == this.linshijiesuo){ kuangpath = '' + 'kapaikuang/dikuang3' }else{ kuangpath = '' + 'kapaikuang/dikuang2' } cc.resources.load(kuangpath, cc.SpriteFrame, (err, assert)=>{ if(err) return console.error(err) suo.spriteFrame = assert as cc.SpriteFrame }) } /** * 点击一堆牌 */ kapainodeBtnClick(t, e){ let moveUp = this.moveUp if(this.selectIndex == -1){ if(this.dizuoState[Number(e)] == 0){ //未解锁 if(Number(e) >= 5 && Number(e) <= 8){ let mubiaolevelnum = this.levelbarSc.levelnum[this.levelbarSc.jindu] TipsManager.Instance.createTips('下个目标>>' + mubiaolevelnum + '解锁卡槽') }else if(Number(e) >= 9 && Number(e) <= 10 && Number(e) == this.linshijiesuo){ var self = this TrackingManager.send(TrackingType.TemporaryCabinet) AdsApiMgr.Instance.motivational_Video_Show(()=>{ self.videoJieSuoDiZuo(Number(e)) }, ()=>{}) } return } if(t.currentTarget.children.length > 0){ AudioManager.playEffect(soundName.xuanka) let selectTarget = t.currentTarget let lastnode = selectTarget.children[selectTarget.children.length - 1] let lastnodesc:kapaiSc = lastnode.getComponent(kapaiSc) if(t.currentTarget.children.length >= this.maxKaPaiNum){ //一堆 9个同色不可点击 let tongse = !0 for (let index = 0; index < t.currentTarget.children.length; index++) { const element = t.currentTarget.children[index]; let elsc:kapaiSc = element.getComponent(kapaiSc) if(elsc.kaNum != lastnodesc.kaNum){ tongse = !1 break } } if(tongse == !0){ cc.tween(t.currentTarget) .to(0.1,{y:20}) .to(0.1,{y:0}) .start() //console.log('同色') return } } this.selectIndex = Number(e) //选中的 for (let index = selectTarget.children.length; index > 0; index--) { //console.log('打印index=', index-1) let zinode = selectTarget.children[index-1] let sc:kapaiSc = zinode.getComponent(kapaiSc) if(sc.kaNum != lastnodesc.kaNum){ break }else{ zinode.y += moveUp //this.selectNodeArr.push(zinode) this.selectNodeArr.push(zinode) zinode.getComponent(cc.Animation).play() } } } }else{ if(this.dizuoState[Number(e)] == 0){return TipsManager.Instance.createTips('未解锁')} if(this.selectIndex == Number(e)){ //点击相同位置,复位 AudioManager.playEffect(soundName.xuanka) this.kapaiReset() }else{ //移到对应的位置 this.mubiaoIndex = Number(e) for (let index = 9; index < 11; index++) { //判断临时卡槽 if(this.dizuoState[index] != 0){ this.linshiOperatorNum[index]++ //console.log('操作次数', this.linshiOperatorNum) if(this.linshiOperatorNum[index] > 5 && index != this.mubiaoIndex){ this.closeLinShiKaCao(index) } } } if(t.currentTarget.children.length >= this.maxKaPaiNum){ //点击的位置满了 this.kapaiReset(1) return }else if(t.currentTarget.children.length == 0){ //点击的位置 没有卡牌 ,选中的全部移动 let moveindex = 0 for (let index = this.selectNodeArr.length; index > 0; index--) { const element = this.selectNodeArr[index-1]; element.getComponent(cc.Animation).stop() element.scale = 1 let deltime = this.selectNodeArr.length*this.time01 - this.time01*moveindex this.moveKaPai(element, t.currentTarget, deltime) let sc = element.getComponent(kapaiSc) moveindex ++ PlayData.Instance.storageGameDate[4][this.selectIndex].pop() PlayData.Instance.storageGameDate[4][Number(e)].push(sc.kaNum) } this.storageCheckOutData() let kapainode = cc.find('di' + this.selectIndex + '/kapainode', this.dizuo) this.scheduleOnce(()=>{this.checkWenHao(kapainode)}, this.selectNodeArr.length*this.time01+0.2) this.selectIndex = -1 this.selectNodeArr = [] return } let mubiaochildren = t.currentTarget.children let selectchildren = this.selectNodeArr let mubiaonode = mubiaochildren[mubiaochildren.length - 1] let mubiaonodesc = mubiaonode.getComponent(kapaiSc) let selectnode = selectchildren[0] let selectnodesc = selectnode.getComponent(kapaiSc) let parent = selectnode.parent let cha = parent.children.length - selectchildren.length if(selectnodesc.kaNum == mubiaonodesc.kaNum){ //选中和要放置的位置最上面的卡牌一样 可以移动 let moveindex = 0 let totalnum = t.currentTarget.children.length let duoyu = 0 for (let index = this.selectNodeArr.length; index > 0; index--) { const element = this.selectNodeArr[index-1]; element.getComponent(cc.Animation).stop() element.scale = 1 if(totalnum + moveindex >= this.maxKaPaiNum){ element.x = this.posX[cha + duoyu] element.y = 0 duoyu++ }else{ let zongtime = 0 if((totalnum + this.selectNodeArr.length) > this.maxKaPaiNum){ let yushu = this.maxKaPaiNum - totalnum zongtime = yushu * this.time01 }else{ zongtime = this.selectNodeArr.length * this.time01 } //let deltime = 0.1*moveindex let deltime = zongtime - this.time01*moveindex this.moveKaPai(element, t.currentTarget, deltime) moveindex ++ PlayData.Instance.storageGameDate[4][this.selectIndex].pop() PlayData.Instance.storageGameDate[4][Number(e)].push(selectnodesc.kaNum) } } this.storageCheckOutData() let kapainode = cc.find('di' + this.selectIndex + '/kapainode', this.dizuo) this.scheduleOnce(()=>{this.checkWenHao(kapainode)}, this.selectNodeArr.length*this.time01+0.2) this.selectIndex = -1 this.selectNodeArr = [] }else{ this.kapaiReset(1) return } } } } /** * 卡牌复位 */ kapaiReset(leixing?){ let movetime = 0.04 let mx = 5 for (let index = 0; index < this.selectNodeArr.length; index++) { const zinode = this.selectNodeArr[index]; const px = zinode.x if(leixing == 1){ AudioManager.playEffect(soundName.dingdong) zinode.getComponent(cc.Animation).stop() zinode.scale = 1 cc.tween(zinode) .to(movetime, {x:px-mx}) .to(movetime, {x:px}) .to(movetime, {x:px+mx}) .to(movetime, {x:px}) .to(movetime, {x:px-mx}) .to(movetime, {x:px}) .to(movetime, {x:px+mx}) .to(movetime, {x:px}) .call(()=>{ zinode.y -= this.moveUp }) .start() }else{ zinode.getComponent(cc.Animation).stop() zinode.scale = 1 zinode.y -= this.moveUp } } this.selectIndex = -1 this.selectNodeArr = [] } /** * 关闭临时卡槽 */ closeLinShiKaCao(index){ let di = cc.find('di'+index, this.dizuo) let kapainode = cc.find('kapainode', di) if(kapainode.children.length == 0){ this.closeJieSuoDiZuo(index) }else{ let lastnode = kapainode.children[kapainode.children.length - 1] let lastnodesc:kapaiSc = lastnode.getComponent(kapaiSc) let tongse = !0 let selectNodeArr = [] for (let inde = kapainode.children.length; inde > 0; inde--) { let zinode = kapainode.children[inde-1] let elsc:kapaiSc = zinode.getComponent(kapaiSc) if(elsc.kaNum != lastnodesc.kaNum){ tongse = !1 break } selectNodeArr.push(zinode) } if(tongse == !0){ for (let mm = 0; mm < 9; mm++) { let mdi = cc.find('di'+mm, this.dizuo) let mkpnode = cc.find('kapainode', mdi) if(mkpnode.children.length == 0 && this.dizuoState[mm] == 1 && mm != this.selectIndex && mm != this.mubiaoIndex && this.selectIndex != index){ let moveindex = 0 for (let ind = selectNodeArr.length; ind > 0; ind--) { const element = selectNodeArr[ind-1]; let deltime = selectNodeArr.length*this.time01 - this.time01*moveindex this.moveKaPai(element, mkpnode, deltime) element.getComponent(cc.Animation).stop() element.scale = 1 moveindex ++ } this.scheduleOnce(()=>{ this.closeJieSuoDiZuo(index) }, 0.4) break }else{ // let mmnode = mkpnode.children[mkpnode.children.length - 1] // let mmnodesc:kapaiSc = mmnode.getComponent(kapaiSc) // if(mmnodesc.kaNum == selectNodeArr[0].getComponent(kapaiSc).kaNum && // (selectNodeArr.length + mkpnode.children.length)<=10 && this.dizuoState[mm] == 1){ // let moveindex = 0 // for (let ind = selectNodeArr.length; ind > 0; ind--) { // const element = selectNodeArr[ind-1]; // let deltime = selectNodeArr.length*0.1 - 0.1*moveindex // this.moveKaPai(element, mkpnode, deltime) // moveindex ++ // } // break // } } } } } } /** * 按钮点击事件 * @param t * @param e */ btnClickCallBack(t, e){ if(e == 'fapai'){ this.fapaiOperate() }else if(e == 'hecheng'){ this.checkHeCheng() }else if(e == 'xipai'){ TrackingManager.send(TrackingType.Shuffle); var self = this AdsApiMgr.Instance.motivational_Video_Show(()=>{ self.xipaiOperate() }, ()=>{}) } } /** * 发牌操作 */ fapaiOperate(){ this.kapaiReset() //先检测那些地方能发牌 能发几张 let datearr = [] for (let index = 0; index < this.dizuoState.length; index++) { if(this.dizuoState[index] == 1 && index != 9 && index != 10){ let di = cc.find('di'+index, this.dizuo) let kapainode = cc.find('kapainode', di) if(this.maxKaPaiNum > kapainode.children.length){ let arr = [index, this.maxKaPaiNum - kapainode.children.length] datearr.push(arr) } } } if(datearr.length == 0){ //所有的位置都不可发牌 }else{ AudioManager.playEffect(soundName.fapai) let fapaijiedianshu = 0 //发牌的节点数量 if(datearr.length >= 5){ //多余或者等于4个 ,挑选4个节点发牌 fapaijiedianshu = Utils.getRangeRandom(5, datearr.length) //5 //console.log('打印发牌点', fapaijiedianshu) }else{ //全发 fapaijiedianshu = datearr.length } let randarr = Utils.getRandomValueDif(0, datearr.length-1, fapaijiedianshu) for (let index = 0; index < randarr.length; index++) { const element = randarr[index]; let shuju = datearr[element] let id = shuju[0] //节点id let num = shuju[1] //能发几张牌 let di = cc.find('di'+id, this.dizuo) let kapainode = cc.find('kapainode', di) if(num == 1 || num == 2){ //1个 let leixing = Utils.getRangeRandom(this.mixlevelNum, this.levelNum - 2) for (let index = 0; index < num; index++) { this.addNewKaPai(kapainode, leixing, true) PlayData.Instance.storageGameDate[4][id].push(leixing) } }else if( num == 3 || num == 4 || num == 5){ let randshu = Utils.getRangeRandom(2, 3) let leixing0 = Utils.getRangeRandom(this.mixlevelNum, this.levelNum - 2) let leixing1 = Utils.getRangeRandom(this.mixlevelNum, this.levelNum - 2) let leixing = 0 let wenhao = !1 if(randshu == 2){ let leixing = leixing0 for (let ind = 0; ind < randshu; ind++) { this.addNewKaPai(kapainode, leixing, true) PlayData.Instance.storageGameDate[4][id].push(leixing) } }else if(randshu == 3){ let randgailv = Utils.getRangeRandom(1,this.weizhigailv) for (let ind = 0; ind < randshu; ind++) { wenhao = !1 if(randshu < 2){ if(PlayData.Instance.guanqia >= 1){ if(randgailv == 1){ leixing = 0 wenhao = !0 //randshu == 1 }else{ leixing = leixing0 } }else{ leixing = leixing0 } this.addNewKaPai(kapainode, leixing, true, wenhao) PlayData.Instance.storageGameDate[4][id].push(leixing) }else{ leixing = leixing1 this.addNewKaPai(kapainode, leixing, true) PlayData.Instance.storageGameDate[4][id].push(leixing) } } } }else if(num > 5){ let randshu = Utils.getRangeRandom(2, 5) if(randshu == 1){ let leixing = Utils.getRangeRandom(this.mixlevelNum, this.levelNum - 2) for (let ind = 0; ind < 2; ind++) { this.addNewKaPai(kapainode, leixing, true) PlayData.Instance.storageGameDate[4][id].push(leixing) } }else if(randshu == 2){ for (let mm = 0; mm < 2; mm++) { let leixing = Utils.getRangeRandom(this.mixlevelNum, this.levelNum - 2) for (let nn = 0; nn < 2; nn++) { this.addNewKaPai(kapainode, leixing, true) PlayData.Instance.storageGameDate[4][id].push(leixing) } } }else if(randshu == 3){ let leixing = Utils.getRangeRandom(this.mixlevelNum, this.levelNum - 2) for (let ind = 0; ind < 3; ind++) { this.addNewKaPai(kapainode, leixing, true) PlayData.Instance.storageGameDate[4][id].push(leixing) } }else if(randshu == 4 || randshu == 5){ let leixing0 = Utils.getRangeRandom(this.mixlevelNum, this.levelNum - 2) let leixing1 = Utils.getRangeRandom(this.mixlevelNum, this.levelNum - 2) let leixing = 0 let wenhao = !1 let randgailv = Utils.getRangeRandom(1,this.weizhigailv) for (let index = 0; index < randshu; index++) { wenhao = !1 if(index <2){ if(PlayData.Instance.guanqia >= 1){ if(randgailv == 1){ leixing = 0 wenhao = !0 //index == 1 }else{ leixing = leixing0 } }else{ leixing = leixing0 } //leixing = leixing0 }else{ leixing = leixing1 } this.addNewKaPai(kapainode, leixing, true, wenhao) PlayData.Instance.storageGameDate[4][id].push(leixing) } }else if(randshu == 6){ let gailv = Utils.getRangeRandom(0,1) if(gailv == 0){ let leixing0 = Utils.getRangeRandom(this.mixlevelNum, this.levelNum - 2) let leixing1 = Utils.getRangeRandom(this.mixlevelNum, this.levelNum - 2) let leixing = 0 let wenhao = !1 let randgailv = Utils.getRangeRandom(1,this.weizhigailv) for (let index = 0; index < randshu; index++) { wenhao = !1 if(index <3){ if(PlayData.Instance.guanqia >= 1){ if(randgailv == 1){ leixing = 0 wenhao = !0 //index == 2 }else{ leixing = leixing0 } }else{ leixing = leixing0 } //leixing = leixing0 }else{ leixing = leixing1 } this.addNewKaPai(kapainode, leixing, true, wenhao) PlayData.Instance.storageGameDate[4][id].push(leixing) } }else{ let leixing0 = Utils.getRangeRandom(this.mixlevelNum, this.levelNum - 2) let leixing1 = Utils.getRangeRandom(this.mixlevelNum, this.levelNum - 2) let leixing2 = Utils.getRangeRandom(this.mixlevelNum, this.levelNum - 2) let leixing = 0 let wenhao = !1 let randgailv = Utils.getRangeRandom(1,this.weizhigailv) for (let index = 0; index < randshu; index++) { wenhao = !1 if(index <2){ if(PlayData.Instance.guanqia >= 1){ if(randgailv == 1){ leixing = 0 wenhao = !0 //index == 1 }else{ leixing = leixing0 } }else{ leixing = leixing0 } //leixing = leixing0 }else if(2 == index || index == 3){ leixing = leixing1 } else{ leixing = leixing2 } this.addNewKaPai(kapainode, leixing, true, wenhao) PlayData.Instance.storageGameDate[4][id].push(leixing) } } } } } this.storageCheckOutData() } this.scheduleOnce(()=>{ this.checkNeedXiPai() }, 0.4) } /** * 检测合成 */ checkHeCheng(){ this.kapaiReset() for (let index = 0; index < this.dizuoState.length; index++) { //const ele = this.dizuoState[index]; let di = cc.find('di'+index, this.dizuo) let kapainode = cc.find('kapainode', di) if(kapainode.children.length >= this.maxKaPaiNum){ let nextnum = 0 let tongse = !0 let lastnode = kapainode.children[kapainode.children.length - 1] let lastnodesc:kapaiSc = lastnode.getComponent(kapaiSc) for (let ind = 0; ind 0; kk--) { let zinode = kapainode.children[kk-1] cc.tween(zinode) .delay(0.03*yanchiindex) .removeSelf() .start() .tag(kk) yanchiindex++ } PlayData.Instance.storageGameDate[4][index] = [] this.scheduleOnce(()=>{ //新的 let randshu = 2 //Utils.getRangeRandom(1,2) for (let mm = 0; mm < randshu; mm++) { this.addNewKaPai(kapainode, nextnum, false) PlayData.Instance.storageGameDate[4][index].push(nextnum) } this.storageCheckOutData() let mubiaolevelnum = this.levelbarSc.levelnum[this.levelbarSc.jindu] //console.log('打印目标', mubiaolevelnum, nextnum) if(nextnum == mubiaolevelnum){ this.upRankData(nextnum) let jiesuoid = this.levelbarSc.jindu + 5 this.scheduleOnce(()=>{ this.dizuoState[jiesuoid] = 1 //达成要求 可以解锁下一个格子 let di = cc.find('di'+jiesuoid, this.dizuo) let suo = cc.find('suo', di) cc.tween(suo) .to(0.3, {opacity:0}) .start() AudioManager.playEffect(soundName.kaikacao) },0.5) this.levelNum ++ this.levelbarSc.jindu++ PlayData.Instance.storageGameDate[1] = this.levelbarSc.jindu this.storageCheckOutData() //console.log('新的', this.levelbarSc.jindu,this.levelNum) this.levelbarSc.updateLevelBar() if(this.levelbarSc.jindu == 5){ console.log('达到通关条件') this.notouch.active = !0 this.scheduleOnce(()=>{ let newnode = cc.instantiate(GameResMgr.Instance.uiPre[uiPreName.NumLevelUpPanel]) newnode.parent = cc.director.getScene() let sc = newnode.getComponent(NumLevelUpPanelSc) sc.showPanel(1) sc.setGameSc(this) PlayData.Instance.guanqia++ PlayData.Instance.storageGameDate = [ PlayData.Instance.guanqia, //关卡数 0, //当前进度 9, //临时解锁卡槽的位置 [0,0,0], //临时卡槽的状态 [] //每个底座卡牌的数据 ] this.storageCheckOutData() }, 0.5) }else{ this.scheduleOnce(()=>{ let newnode = cc.instantiate(GameResMgr.Instance.uiPre[uiPreName.NumLevelUpPanel]) newnode.parent = cc.director.getScene() let sc = newnode.getComponent(NumLevelUpPanelSc) sc.showPanel(0) }, 0.5) } } let dizuo = kapainode.parent cc.find('selectkuang', dizuo).active = !1 this.checkNeedXiPai() }, 0.35) AudioManager.playEffect(soundName.hecheng) } } } } /** * 下一关 */ nextCheck(){ let t = cc.tween t(this.node) .parallel( t().to(0.5, {x:-1000}), t().call(()=>{cc.game.emit('addnewgame')}) ) .removeSelf() .start() } /** * 检测是否需要洗牌操作 */ checkNeedXiPai(){ let open1 = 0 let open2 = 0 for (let index = 0; index < this.dizuoState.length; index++) { const ele = this.dizuoState[index]; let di = cc.find('di'+index, this.dizuo) //cc.find('selectkuang', di).active = !1 let kapainode = cc.find('kapainode', di) if(this.dizuoState[index] == 1 && index != 9 && index != 10){ open1 ++ if(kapainode.children.length > 5){ open2 ++ } } } this.xipaiBtn.active = (open1-open2) == 0 } /** * 洗牌操作 */ xipaiOperate(){ AudioManager.playEffect(soundName.xipai) this.xipaiBtn.active = !1 for (let index = 0; index < this.dizuoState.length; index++) { const ele = this.dizuoState[index]; let di = cc.find('di'+index, this.dizuo) cc.find('selectkuang', di).active = !1 let kapainode = cc.find('kapainode', di) //kapainode.removeAllChildren() //cc.find('selectkuang', di).active = !1 //this.allNodeArr[index] = [] if(this.dizuoState[index] == 1){ let childrenarr = kapainode.children while(childrenarr.length > 0){ let nodesc:kapaiSc = childrenarr[0].getComponent(kapaiSc) if(nodesc.kaNum == 0){ let leixing = Utils.getRangeRandom(this.mixlevelNum, this.levelNum - 2) nodesc.setKaNum(leixing) } let newpos0 = nodesc.node.parent.convertToWorldSpaceAR(nodesc.node.position) let newpos1 = this.moveNode.convertToNodeSpaceAR(newpos0) //this.moveNode 是个过渡节点 保障移动的节点在最上层 nodesc.node.position = newpos1 nodesc.node.parent = this.moveNode cc.tween(nodesc.node) .to(0.2, {position:cc.v3(0,0,0)}) .start() } } } this.scheduleOnce(()=>{ let allnode = this.moveNode.children let index = 0 PlayData.Instance.storageGameDate[4] = [[],[],[],[],[],[],[],[],[],[],[],[]] while(allnode.length > 0){ index ++ const ele = allnode[0]; let elesc = ele.getComponent(kapaiSc) let num = elesc.kaNum-PlayData.Instance.guanqia*6 let kapainode = cc.find('di' + (num-1) + '/kapainode', this.dizuo) let newpos0 = ele.parent.convertToWorldSpaceAR(ele.position) let newpos1 = kapainode.convertToNodeSpaceAR(newpos0) ele.position = newpos1 ele.parent = kapainode cc.find('di' + (num-1) + '/selectkuang' , this.dizuo).active = kapainode.children.length >= 10 if(kapainode.children.length > 10){ ele.destroy() }else{ PlayData.Instance.storageGameDate[4][num-1].push(elesc.kaNum) cc.tween(ele) .to(0.2, {position:cc.v3(this.posX[kapainode.children.length-1],0,0)}) .start() } } //console.log('打印卡牌数据', PlayData.Instance.storageGameDate) this.storageCheckOutData() }, 0.3) } /** * 移动卡牌 * @param znode * @param nodeparent * @param deltime */ moveKaPai(znode, nodeparent, deltime){ let newpos0 = znode.parent.convertToWorldSpaceAR(znode.position) let newpos1 = this.moveNode.convertToNodeSpaceAR(newpos0) //this.moveNode 是个过渡节点 保障移动的节点在最上层 znode.x = newpos1.x znode.y = newpos1.y znode.parent = this.moveNode let newpos22 = cc.v2(this.posX[nodeparent.children.length-1+this.moveNode.children.length],0) //console.log('移动层节点数', this.moveNode.children.length) //console.log('父节点数', nodeparent.children.length) let newpos2 = nodeparent.convertToWorldSpaceAR(newpos22) let newpos3 = this.moveNode.convertToNodeSpaceAR(newpos2) let newpos4 = cc.v3(newpos3.x,newpos3.y,0) cc.tween(znode) //.delay(deltime) .to(0.12,{position:newpos4}) .call(()=>{ AudioManager.playEffect(soundName.moveka) znode.position = cc.v3(this.posX[nodeparent.children.length], 0, 0) znode.parent = nodeparent //console.log('打印卡牌的数量', nodeparent.children.length) if(nodeparent.children.length >= this.maxKaPaiNum){ //console.log('卡槽满10') let tongse = !0 let lastnode = nodeparent.children[nodeparent.children.length - 1] let lastnodesc:kapaiSc = lastnode.getComponent(kapaiSc) for (let index = 0; index { if(parentnode.children.length >= this.maxKaPaiNum){ //添加卡牌满10 let tongse = !0 let lastnode = parentnode.children[parentnode.children.length - 1] let lastnodesc:kapaiSc = lastnode.getComponent(kapaiSc) for (let index = 0; index 0){ let lastnode = childrennode[childrennode.length-1] let lastnodesc = lastnode.getComponent(kapaiSc) if(lastnodesc.kaNum == 0){ for (let ind = childrennode.length; ind > 0; ind--) { const element = childrennode[ind-1]; let elsc:kapaiSc = element.getComponent(kapaiSc) if(elsc.kaNum != lastnodesc.kaNum){ break }else{ selectarr.push(element) PlayData.Instance.storageGameDate[4][id].pop() } } } } //console.log('打印0号', selectarr) let leixing = Utils.getRangeRandom(this.mixlevelNum, this.levelNum - 2) for (let index = 0; index < selectarr.length; index++) { let sc = selectarr[index].getComponent(kapaiSc) sc.setKaNum(leixing) sc.node.scale = 0 cc.tween(sc.node) .to(0.1, {scale:1}) .start() PlayData.Instance.storageGameDate[4][id].push(leixing) } if(selectarr.length > 0){ this.storageCheckOutData() } } /** * 存储关卡数据 */ storageCheckOutData(){ gameStorage.Instance.setCheckOutData(PlayData.Instance.storageGameDate) } /** * 上传排行榜数据 */ upRankData(num){ let highscore = gameStorage.Instance.getHightScore() if(Number(num) > highscore){ gameStorage.Instance.setHightScore(Number(num)) AdsApiMgr.Instance.setImRankData_Num(String(num)) } } // update (dt) {} }