games/Legend-of-the-Water-Cup/assets/scripts/GameEnd.ts

173 lines
5.3 KiB
TypeScript

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')
}
}