import Model from "./Model"; import Config from "./Config"; import {TrackingManager, TrackingType} from "./Tracking/TrackingManager"; const { ccclass, property } = cc._decorator; @ccclass export default class GameEnd extends cc.Component { @property(cc.Node) winNode: cc.Node = null; @property(cc.Node) loseNode: cc.Node = null; @property(cc.Node) topNode: cc.Node = null; @property([cc.Node]) stars: cc.Node[] = []; @property(cc.Node) eff: cc.Node = null; @property(cc.Prefab) endParticle: cc.Prefab = null; @property({ type:[cc.AudioClip] }) starAudios: cc.AudioClip[] = []; onLoad() { this.winNode.active = Model.game.win this.loseNode.active = !Model.game.win this.topNode.getChildByName('success').active = Model.game.win this.topNode.getChildByName('failed').active = !Model.game.win //动态调整top位置 var size = cc.view.getVisibleSize(); if (size.height / size.width > 2) { this.topNode.getComponent(cc.Widget).top = 160 } else { this.topNode.getComponent(cc.Widget).top = 110 } if (!Model.game.win) { this.eff.active = true; var fade = cc.fadeOut(1); var call = cc.callFunc(this.onEffend, this); var seq = cc.sequence(fade, call); this.eff.runAction(seq); } } onEffend() { this.eff.active = false } start() { if (Model.game.selectedModel != 4) { this.topNode.getChildByName('star1').active = false; this.topNode.getChildByName('star2').active = false; this.topNode.getChildByName('star3').active = false; this.topNode.getChildByName('stargray').active = false; return; } if(!Model.game.win)return; let getStar = Model.game.getStar; for (var i = 0; i < getStar; i++) { var star = this.stars[i]; star.active = true star.scale = 4; star.opacity = 0 var t = i * 0.3 + 0.3 var delay = cc.delayTime(t); var scale = cc.scaleTo(0.5, 1, 1).easing(cc.easeBackOut()); var seq = cc.sequence(delay, scale); star.runAction(seq); var delay2 = delay.clone(); var fade = cc.fadeIn(0.3) var call = cc.callFunc(this.creatExpEffect, this, [i, star.x, star.y]); star.runAction(cc.sequence(delay2, fade, call)) } //提交分数 var starC = 0 for (var i = 0; i < Model.game.drawLevelInfo.length; i++) { if (Model.game.drawLevelInfo[i] > 0) starC += Model.game.drawLevelInfo[i]; } } creatExpEffect(obj, data) { // this.particles[data[0]].resetSystem(); var particle = cc.instantiate(this.endParticle); particle.getComponent(cc.ParticleSystem).resetSystem() particle.x = data[1] particle.y = data[2] this.node.getChildByName('top').addChild(particle); cc.audioEngine.playEffect(this.starAudios[data[0]], false) } next() { if (Model.game.selectedModel == 1) { if (Model.game.selectedLevel >= Config.preciseLevels.length - 1) cc.director.loadScene('menu') else { Model.game.selectedLevel++ cc.director.loadScene('game') } } else if (Model.game.selectedModel == 2) { // console.log(Model.game.selectedLevel, Config.brickLevels.length - 1) if (Model.game.selectedLevel >= Config.brickLevels.length - 1) cc.director.loadScene('menu') else { Model.game.selectedLevel++ cc.director.loadScene('gameDrop') } } else if (Model.game.selectedModel == 4) { //console.log(Model.game.selectedLevel, Config.drawLevels.length - 1) if (Model.game.selectedLevel >= Config.drawLevels.length - 1) cc.director.loadScene('menu') else { Model.game.selectedLevel++ cc.director.loadScene('gameDraw') } } } retry() { TrackingManager.send(TrackingType.Retry); if (Model.game.selectedModel == 1) { if (Model.game.selectedLevel >= Config.preciseLevels.length - 1) cc.director.loadScene('menu') else { cc.director.loadScene('game') } } else if (Model.game.selectedModel == 2) { // console.log(Model.game.selectedLevel, Config.brickLevels.length - 1) if (Model.game.selectedLevel >= Config.brickLevels.length - 1) cc.director.loadScene('menu') else { cc.director.loadScene('gameDrop') } } else if (Model.game.selectedModel == 4) { //console.log(Model.game.selectedLevel, Config.drawLevels.length - 1) if (Model.game.selectedLevel >= Config.drawLevels.length - 1) cc.director.loadScene('menu') else { cc.director.loadScene('gameDraw') } } } onBackClick() { cc.director.loadScene('menu') } }