678 lines
23 KiB
TypeScript
678 lines
23 KiB
TypeScript
import Ball from "../Ball";
|
|
import Define from "../common/Define";
|
|
import Shake from "../Shake";
|
|
import Common from "../common/Common";
|
|
import FrameAnimation from "../common/FrameAnimation";
|
|
import FramaAnimations from "../common/FramaAnimations";
|
|
import Bullet from "../Bullet";
|
|
import UserInfo from "../UserInfo";
|
|
import LevelInfo from "../Levellnfo";
|
|
import TimeTaskManager from "./TimeTaskManager";
|
|
import UIManager from "./UIManager";
|
|
import LDataGoldManager from "../datas/LDataGoldManager";
|
|
import LDataStoncolourManager from "../datas/LDataStoncolourManager";
|
|
import LDataStoneManager from "../datas/LDataStoneManager";
|
|
import GoldCtr from "../GoldCtr";
|
|
import ParticleEffectManager from "./ParticleEffectManager";
|
|
import ParticleEffect from "../ParticleEffect";
|
|
import WXHelper from "../common/WXHelper";
|
|
import CannonCtr from "../CannonCtr";
|
|
import CannonManager from "./CannonManager";
|
|
import LDataCannonManager from "../datas/LDataCannonManager";
|
|
import ResManager from "./ResManager";
|
|
import HttpManager from "./HttpManager";
|
|
import LDataSceneManager from "../datas/LDataSceneManager";
|
|
import SoundManager from "./SoundManager";
|
|
|
|
// 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 GameManager extends cc.Component {
|
|
|
|
@property(cc.Node)
|
|
nodeBalls: cc.Node = null;
|
|
|
|
@property(cc.Node)
|
|
nodeGolds:cc.Node = null;
|
|
|
|
@property(cc.Node)
|
|
nodeParticleEffects:cc.Node = null;
|
|
|
|
@property(cc.Node)
|
|
nodeBg:cc.Node = null;
|
|
|
|
@property(cc.Node)
|
|
nodeGameRoot:cc.Node = null;//游戏子节点
|
|
|
|
@property(cc.Node)
|
|
nodeUiRoot:cc.Node = null;//ui 子节点
|
|
|
|
@property(cc.Node)
|
|
nodeGold:cc.Node = null;//ui金币
|
|
|
|
@property(cc.Node)
|
|
nodeBallRoot:cc.Node = null;//球体的根节点
|
|
|
|
@property(cc.Node)
|
|
nodeGoldRoot:cc.Node = null;//球体的根节点
|
|
|
|
@property(cc.Node)
|
|
nodePrompt: cc.Node = null; //提示
|
|
|
|
@property(cc.Sprite)
|
|
display: cc.Sprite = null; //微信子域
|
|
|
|
@property(cc.Node)
|
|
textAddGold: cc.Node = null; //金币增加
|
|
|
|
|
|
@property(cc.Node)
|
|
addPowerEffect:cc.Node = null;
|
|
|
|
@property(cc.Node)
|
|
sceneBgs:cc.Node = null;
|
|
|
|
@property(cc.Node)
|
|
nodeSoundRoot:cc.Node = null;
|
|
|
|
@property(cc.Node)
|
|
sceneObjs:cc.Node = null;
|
|
|
|
|
|
wxHelper:WXHelper = null;
|
|
|
|
private bgInitPos:cc.Vec2 = null;
|
|
|
|
private isCanMoveCannon:boolean = false;
|
|
private moveToPos:cc.Vec2 = null;
|
|
|
|
|
|
private totalShootTime:number = 0;
|
|
private totalShootCount:number = 0;
|
|
|
|
public static instance:GameManager = null;
|
|
|
|
private bulletArr:Bullet[] = [];
|
|
private ballArr:Ball[] = [];
|
|
private goldArr:GoldCtr[] = [];
|
|
|
|
private totalShootAnimaTime:number = 0;
|
|
//当前坦克
|
|
curCannonCtr:CannonCtr = null;
|
|
|
|
private nodeBullet:cc.Node = null;//子弹
|
|
|
|
private newMethod(): CannonCtr {
|
|
return null;
|
|
}
|
|
|
|
start () {
|
|
|
|
this.wxHelper = new WXHelper();
|
|
this.wxHelper.initWXHelper();
|
|
this.wxHelper.display = this.display;
|
|
WXHelper.initRewardedVideoAd();
|
|
//cc.game.setFrameRate(60);
|
|
//初始化数据表
|
|
LDataGoldManager.GetDataById(0);
|
|
LDataStoncolourManager.GetDataById(0);
|
|
LDataStoneManager.GetDataById(0);
|
|
LDataCannonManager.GetDataById(0);
|
|
LDataSceneManager.GetDataById(0);
|
|
|
|
//UserInfo.clearAllDatas();
|
|
//加载玩家本地数据
|
|
UserInfo.loadAllData();
|
|
|
|
|
|
|
|
|
|
//初始化数据表完成
|
|
GameManager.instance = this;
|
|
|
|
// if(cc.sys.platform === cc.sys.WECHAT_GAME){
|
|
// this.nodeBg.getParent().on(cc.Node.EventType.TOUCH_START, (e: cc.Event.EventTouch) => this.mouseDown(e))
|
|
// this.nodeBg.getParent().on(cc.Node.EventType.TOUCH_MOVE, (e: cc.Event.EventTouch) => this.mouseMove(e))
|
|
// this.nodeBg.getParent().on(cc.Node.EventType.TOUCH_END, (e: cc.Event.EventTouch) => this.mouseEnd(e))
|
|
// this.nodeBg.getParent().on(cc.Node.EventType.TOUCH_CANCEL, (e: cc.Event.EventTouch) => this.mouseEnd(e))
|
|
// }else {
|
|
// this.nodeBg.getParent().on(cc.Node.EventType.MOUSE_DOWN, (e: cc.Event.EventTouch) => this.mouseDown(e))
|
|
// this.nodeBg.getParent().on(cc.Node.EventType.MOUSE_MOVE, (e: cc.Event.EventTouch) => this.mouseMove(e))
|
|
// this.nodeBg.getParent().on(cc.Node.EventType.MOUSE_UP, (e: cc.Event.EventTouch) => this.mouseEnd(e))
|
|
// }
|
|
// 注册触摸事件
|
|
this.nodeBg.getParent().on(cc.Node.EventType.TOUCH_START, (e: cc.Event.EventTouch) => this.mouseDown(e));
|
|
this.nodeBg.getParent().on(cc.Node.EventType.TOUCH_MOVE, (e: cc.Event.EventTouch) => this.mouseMove(e));
|
|
this.nodeBg.getParent().on(cc.Node.EventType.TOUCH_END, (e: cc.Event.EventTouch) => this.mouseEnd(e));
|
|
this.nodeBg.getParent().on(cc.Node.EventType.TOUCH_CANCEL, (e: cc.Event.EventTouch) => this.mouseEnd(e));
|
|
|
|
// 注册鼠标事件
|
|
this.nodeBg.getParent().on(cc.Node.EventType.MOUSE_DOWN, (e: cc.Event.EventMouse) => this.mouseDown(e));
|
|
this.nodeBg.getParent().on(cc.Node.EventType.MOUSE_MOVE, (e: cc.Event.EventMouse) => this.mouseMove(e));
|
|
this.nodeBg.getParent().on(cc.Node.EventType.MOUSE_UP, (e: cc.Event.EventMouse) => this.mouseEnd(e));
|
|
|
|
|
|
|
|
cc.game.on(cc.game.EVENT_HIDE,this.gameEventHide)
|
|
cc.game.on(cc.game.EVENT_SHOW,this.gameEventShow)
|
|
cc.game.on(cc.game.EVENT_ENGINE_INITED,this.gameEventShow)
|
|
|
|
|
|
this.changeCannonById(UserInfo.curUseCannonId)
|
|
|
|
TimeTaskManager.addTimeTask(3.5,this.createStone.bind(this));
|
|
this.bgInitPos = this.nodeBg.position;
|
|
Common.isFirstCreatStone = true;
|
|
|
|
//保存几个根节点
|
|
Common.nodeGameRoot = this.nodeGameRoot;
|
|
Common.nodeUiRoot = this.nodeUiRoot;
|
|
Common.nodeBallRoot = this.nodeBallRoot;
|
|
Common.nodeGoldRoot = this.nodeGoldRoot;
|
|
Common.nodeParticleEffects = this.nodeParticleEffects;
|
|
Common.nodePrompt = this.nodePrompt;
|
|
Common.nodeAddGold = this.textAddGold;
|
|
Common.addPowerEffect = this.addPowerEffect;
|
|
Common.nodeSoundRoot = this.nodeSoundRoot;
|
|
Common.offLineRewardCount = LevelInfo.getOffLineRewardGoldCount();
|
|
|
|
|
|
|
|
|
|
this.changeSceneByIndex(UserInfo.getCurSceneIndex(),true)
|
|
|
|
|
|
|
|
|
|
if(Define.gameId == "002"){
|
|
HttpManager.getInstance().getGameState(function(){
|
|
this.enterGame();
|
|
}.bind(this));
|
|
}else{
|
|
this.enterGame();
|
|
}
|
|
}
|
|
|
|
enterGame(){
|
|
if(Common.offLineRewardCount > 20){
|
|
UIManager.getInstance().showView(Define.viewOffLineReward);
|
|
UIManager.getInstance().showView(Define.viewUpgrade);
|
|
}else{
|
|
UIManager.getInstance().showView(Define.viewMain);
|
|
UIManager.getInstance().showView(Define.viewUpgrade);
|
|
}
|
|
WXHelper.wxCheckLogin();
|
|
}
|
|
|
|
changeCannonById(id = 0){
|
|
let lastPos:cc.Vec2 = new cc.Vec2(320,280)
|
|
if(this.curCannonCtr != null){
|
|
lastPos = this.curCannonCtr.node.position
|
|
this.curCannonCtr.node.destroy()
|
|
}
|
|
|
|
Common.curUseCannonId = id
|
|
Common.curDataCannon = LDataCannonManager.GetDataById(Common.curUseCannonId)
|
|
CannonManager.createCannon(id,this.nodeGameRoot,function(cannonCtr:CannonCtr){
|
|
this.curCannonCtr = cannonCtr
|
|
this.curCannonCtr.node.position = lastPos
|
|
this.curCannonCtr.node.setSiblingIndex(2)
|
|
this.removeAllBullet()
|
|
ResManager.loadPrefab("prefabs/bullets/bullet"+Common.curDataCannon.bulletsId.toString(),function(bullet){
|
|
this.nodeBullet = bullet
|
|
}.bind(this))
|
|
|
|
}.bind(this));
|
|
}
|
|
|
|
changeSceneByIndex(index:number,isFirst:boolean = false){
|
|
for (let i = 0; i < this.sceneBgs.childrenCount; i++) {
|
|
this.sceneBgs.children[i].active = false
|
|
}
|
|
this.sceneBgs.children[index].active = true
|
|
|
|
if(index != 0){
|
|
this.sceneObjs.active = false
|
|
}else{
|
|
this.sceneObjs.active = true
|
|
}
|
|
|
|
if(index == 2){
|
|
console.log("播放音乐")
|
|
SoundManager.pauseBackGroundSound(false)
|
|
}else{
|
|
SoundManager.pauseBackGroundSound(true)
|
|
}
|
|
|
|
}
|
|
|
|
mouseDown (event:cc.Event.EventTouch){
|
|
this.isCanMoveCannon = true;
|
|
this.moveToPos = event.getLocation();
|
|
console.log("触摸开始,位置:", event.getLocation());
|
|
console.log("事件类型:", event.type);
|
|
}
|
|
|
|
mouseMove (event:cc.Event.EventTouch){
|
|
if(!this.isCanMoveCannon){
|
|
return;
|
|
}
|
|
this.moveToPos = event.getLocation();
|
|
console.log("触摸移动,位置:", event.getLocation());
|
|
}
|
|
|
|
mouseEnd (event:cc.Event.EventTouch){
|
|
this.isCanMoveCannon = false;
|
|
this.curCannonCtr.shootBullet(false)
|
|
console.log("触摸结束/取消,位置:", event.getLocation());
|
|
}
|
|
|
|
cannonMove(dt){
|
|
|
|
if(this.isCanMoveCannon){
|
|
this.curCannonCtr.move(dt,this.isCanMoveCannon,this.moveToPos);
|
|
this.shootBullet(dt);
|
|
this.curCannonCtr.shootBullet(true)
|
|
}
|
|
}
|
|
|
|
shootBullet(dt){
|
|
|
|
let bulletCount:number = UserInfo.bulletShootMaxCount * Common.addPower
|
|
//发射的子弹已经达到上限
|
|
if(this.getCurValidBulletCount() >= bulletCount){
|
|
return
|
|
}
|
|
this.totalShootTime = this.totalShootTime + dt
|
|
//这里处理动作 限制动作的最快速度
|
|
if(bulletCount >= 10)
|
|
{
|
|
this.totalShootAnimaTime = this.totalShootAnimaTime + dt
|
|
if(this.totalShootAnimaTime > 0.1){
|
|
this.totalShootAnimaTime = 0
|
|
this.curCannonCtr.playAttack()
|
|
}
|
|
}else
|
|
{
|
|
if(this.totalShootTime > 1/bulletCount){
|
|
this.curCannonCtr.playAttack()
|
|
}
|
|
}
|
|
let count:number = bulletCount;
|
|
if(count >= Define.bulletMacCount)
|
|
{
|
|
count = Define.bulletMacCount;
|
|
}
|
|
if(this.totalShootTime > 1/count) //20
|
|
{
|
|
this.totalShootCount++;
|
|
let row = Math.floor(bulletCount/Define.bulletMacCount)
|
|
let count = Math.floor(bulletCount%Define.bulletMacCount)
|
|
if(this.totalShootCount <= count)
|
|
{
|
|
row = row + 1
|
|
}
|
|
if(row <= 0)
|
|
{
|
|
row = 1
|
|
}
|
|
//子弹升级了火力
|
|
let power = UserInfo.addFirePower
|
|
if(this.totalShootCount < UserInfo.addFirePowerCount){
|
|
power = power + 1
|
|
}
|
|
for (let index = 0; index < row; index++) {
|
|
let offsetX = Common.getBulletOffsetX(row,index);
|
|
let bullet = this.getBullet();
|
|
let v1 = new cc.Vec2(this.curCannonCtr.node.position.x,(this.curCannonCtr.node.position.y + 50));
|
|
let v2 = new cc.Vec2(this.curCannonCtr.node.position.x + offsetX,(this.curCannonCtr.node.position.y + 1136));
|
|
bullet.setPower(power)
|
|
bullet.shoot(v1,v2);
|
|
}
|
|
this.totalShootTime = 0
|
|
}
|
|
if(this.totalShootCount > count)
|
|
{
|
|
this.totalShootCount = 0;
|
|
}
|
|
}
|
|
|
|
isCanShakeBg:boolean = true
|
|
ShakeBg(shakeLevel:number = 5){
|
|
if(this.isCanShakeBg){
|
|
this.isCanShakeBg = false
|
|
this.nodeBg.runAction(cc.sequence(Shake.create(0.2,shakeLevel,shakeLevel),
|
|
cc.callFunc(function(){
|
|
this.nodeBg.position = this.bgInitPos;
|
|
this.isCanShakeBg = true
|
|
}.bind(this))
|
|
));
|
|
}
|
|
}
|
|
|
|
getBullet():Bullet{
|
|
let bullet:Bullet = null
|
|
for (let index = 0; index < this.bulletArr.length; index++) {
|
|
if(!this.bulletArr[index].isValidBullet){ //已经无效重新利用
|
|
bullet = this.bulletArr[index];
|
|
}
|
|
}
|
|
if(bullet == null)
|
|
{
|
|
bullet = cc.instantiate(this.nodeBullet).getComponent(Bullet);
|
|
Common.nodeBallRoot.addChild(bullet.node);
|
|
this.bulletArr.push(bullet);
|
|
}
|
|
//默认子弹的威力是1
|
|
bullet.power = 1
|
|
return bullet
|
|
}
|
|
//移除所有子弹
|
|
removeAllBullet(){
|
|
for (let index = 0; index < this.bulletArr.length; index++) {
|
|
this.bulletArr[index].node.destroy();
|
|
}
|
|
this.bulletArr = []
|
|
}
|
|
|
|
getCurValidBulletCount():number{
|
|
let count = 0;
|
|
for (let index = 0; index < this.bulletArr.length; index++) {
|
|
if(this.bulletArr[index].isValidBullet){
|
|
count++;
|
|
}
|
|
}
|
|
return count;
|
|
}
|
|
|
|
update (dt) {
|
|
|
|
this.wxHelper.update(dt);
|
|
if(Common.isPause || Common.isGameOver || !Common.isPlaying){
|
|
return;
|
|
}
|
|
|
|
this.cannonMove(dt);
|
|
this.handlerBulletCollision();
|
|
TimeTaskManager.updateTime(dt);
|
|
}
|
|
|
|
handlerBulletCollision(){
|
|
for (let index = 0; index < this.bulletArr.length; index++) {
|
|
if(this.bulletArr[index].isValidBullet){
|
|
this.checkIsBulletCollision(this.bulletArr[index]);
|
|
}
|
|
}
|
|
}
|
|
//单独子弹对 球进行检测
|
|
checkIsBulletCollision(bullet:Bullet){
|
|
for (let index = 0; index < this.ballArr.length; index++) {
|
|
|
|
let ball = this.ballArr[index];
|
|
let isCollision = Common.isCollision(ball.node,bullet.node,ball.stoneData.radius);
|
|
if(isCollision){
|
|
bullet.setValid(false);
|
|
ball.Hit(bullet.power);
|
|
Common.totalShowScore = Common.totalShowScore + bullet.power;
|
|
UserInfo.totalScore = UserInfo.totalScore + bullet.power;
|
|
UIManager.getInstance().executeEvent(Define.viewBattle,"refreshScore");
|
|
if(ball.getNumber() <= 0){
|
|
if(ball.stoneData.stonId == 0){
|
|
Common.curLevelScore++;
|
|
UIManager.getInstance().executeEvent(Define.viewBattle,"refreshProgressInfo");
|
|
|
|
console.log("金币掉落................")
|
|
this.handlerGoldDrop(ball.node.position);
|
|
if(LevelInfo.isFinishLevel()){
|
|
//已经通过了关卡
|
|
console.log("已经通过了关卡。。。。。。。。。。。。。。。。。。。。")
|
|
this.handlerCollectAllGold() //收集所有金币
|
|
Common.isPlaying = false;
|
|
|
|
UIManager.getInstance().executeEvent(Define.viewBattle,"hideAddPower");
|
|
UIManager.getInstance().showView(Define.viewGameWin);
|
|
UserInfo.saveNextLevel();
|
|
}
|
|
}
|
|
//释放小球
|
|
this.ballArr.splice(index,1);
|
|
//这里创建新的小球
|
|
this.stoneBreakCallBack(ball);
|
|
ball.node.destroy();
|
|
ball = null;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//检测是否存在最大的石块
|
|
checkIsExsitMaxStone():boolean{
|
|
for (let index = 0; index < this.ballArr.length; index++) {
|
|
if(this.ballArr[index].stoneId == 3){
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
createStone(onlyTag:string,dir:number = 0,stoneId:number = -1,pos:cc.Vec2 = null,score:number = 0){
|
|
|
|
if(Common.isPause || Common.isGameOver || !Common.isPlaying){
|
|
return;
|
|
}
|
|
|
|
if(!LevelInfo.isCanCreateStone() && onlyTag != "stoneBreak"){
|
|
console.log("已经创建到最大了。。。。。。。。。");
|
|
return;
|
|
}
|
|
//已经有最大的不创建
|
|
if((this.checkIsExsitMaxStone() || this.ballArr.length > Define.ballMaxCount )&& onlyTag != "stoneBreak"){
|
|
return;
|
|
}
|
|
|
|
if(onlyTag != "stoneBreak"){
|
|
stoneId = LevelInfo.getStoneId();
|
|
if(stoneId == null){
|
|
return;
|
|
}
|
|
}
|
|
|
|
let ball = cc.instantiate(this.nodeBalls.children[stoneId]).getComponent(Ball);
|
|
ball.stoneId = stoneId;
|
|
Common.nodeBallRoot.addChild(ball.node);
|
|
|
|
if(onlyTag == "stoneBreak"){
|
|
ball.appear(Define.center,dir,pos);
|
|
ball.setNumber(score);
|
|
}else{
|
|
let stoneScore = LevelInfo.getStoneScore(Common.isFirstCreatStone);
|
|
Common.isFirstCreatStone = false;
|
|
ball.setNumber(stoneScore);
|
|
ball.appear(Common.getRandom(0,2),dir,pos,LevelInfo.getStoneInitY());
|
|
}
|
|
this.ballArr.push(ball);
|
|
}
|
|
|
|
stoneBreakCallBack(ball:Ball){
|
|
|
|
WXHelper.brateShort();
|
|
let effect:ParticleEffect = ParticleEffectManager.getInstance().showParticleEffect(3,ball.node.position,0.5);
|
|
|
|
effect.node.scale = ball.stoneData.radius/40;
|
|
|
|
if(ball.stoneId > 0){
|
|
this.createStone("stoneBreak",Define.left,ball.stoneId-1,ball.node.position,ball.getBreakScore());
|
|
this.createStone("stoneBreak",Define.right,ball.stoneId-1,ball.node.position,ball.getBreakScore());
|
|
}
|
|
}
|
|
//处理金币掉落
|
|
handlerGoldDrop(pos:cc.Vec2){
|
|
let count:number = LevelInfo.getDropGoldCount();
|
|
if(count >= 0){
|
|
for (let index = 0; index < count; index++) {
|
|
let goldId = LevelInfo.getDropGoldId();
|
|
this.getGold(goldId,pos);
|
|
}
|
|
}
|
|
}
|
|
//获得一个金币
|
|
getGold(goldId:number,pos:cc.Vec2):GoldCtr{
|
|
let goldCtr:GoldCtr = null
|
|
for (let index = 0; index < this.goldArr.length; index++) {
|
|
if(this.goldArr[index].isCanUseTag){
|
|
goldCtr = this.goldArr[index];
|
|
}
|
|
}
|
|
|
|
if(goldCtr == null){
|
|
goldCtr = cc.instantiate(this.nodeGold).getComponent<GoldCtr>(GoldCtr);
|
|
Common.nodeGoldRoot.addChild(goldCtr.node);
|
|
this.goldArr.push(goldCtr);
|
|
}
|
|
goldCtr.node.position = pos;
|
|
goldCtr.setGoldId(goldId);
|
|
let frame:cc.SpriteFrame = this.nodeGolds.children[goldId].getComponent(cc.Sprite).spriteFrame;
|
|
goldCtr.setIcon(frame);
|
|
|
|
return goldCtr;
|
|
}
|
|
|
|
//收集所有金币
|
|
handlerCollectAllGold(){
|
|
for (let index = 0; index < this.goldArr.length; index++) {
|
|
this.goldArr[index].autoCollect();
|
|
}
|
|
}
|
|
|
|
//收集的金币
|
|
handlerCollectGold(goldCount:number){
|
|
UserInfo.curGold = UserInfo.curGold + goldCount;
|
|
UIManager.getInstance().executeEvent(Define.viewBattle,"refreshGold")
|
|
}
|
|
|
|
//移除所有的石头
|
|
removeAllStone(){
|
|
for (let index = 0; index < this.ballArr.length; index++) {
|
|
this.ballArr[index].node.destroy();
|
|
this.ballArr[index] = null;
|
|
}
|
|
this.ballArr = [];
|
|
}
|
|
//金币没有被释放 重复利用
|
|
clearAllGold(){
|
|
for (let index = 0; index < this.goldArr.length; index++) {
|
|
this.goldArr[index].clear();
|
|
}
|
|
}
|
|
//重新开始游戏调用
|
|
restartGame(){
|
|
//清空上一局数据
|
|
this.removeAllStone();
|
|
|
|
this.curCannonCtr.openCollision();
|
|
|
|
LevelInfo.InitLevelStoneInfo();
|
|
|
|
Common.resetDatas();
|
|
|
|
UIManager.getInstance().refreshView(Define.viewBattle);
|
|
|
|
//出现石块
|
|
Common.isGameOver = false;
|
|
Common.isPause = false;
|
|
Common.isPlaying = true;
|
|
this.createStone("");
|
|
}
|
|
//退出游戏
|
|
exitGame(){
|
|
Common.lastShowScore = 0;
|
|
this.removeAllStone(); //清理石头
|
|
this.clearAllGold(); //清理金币
|
|
}
|
|
|
|
gameOver(ball:Ball){
|
|
|
|
if(ball != null){
|
|
if(Common.isGameOver){
|
|
return
|
|
}
|
|
Common.isGameOver = true;
|
|
this.pauseStoneMove(true);
|
|
this.showGameOverEffect()
|
|
}else {
|
|
UserInfo.saveGoldData();
|
|
this.exitGame();
|
|
UIManager.getInstance().executeEvent(Define.viewBattle,"hideAddPower");
|
|
UIManager.getInstance().showView(Define.viewGameResult);
|
|
}
|
|
}
|
|
|
|
//显示结算失败效果
|
|
showGameOverEffect(){
|
|
WXHelper.brateLong();
|
|
this.curCannonCtr.die(function(){
|
|
if(Common.isCanRevive){
|
|
Common.isCanRevive = false;
|
|
UIManager.getInstance().executeEvent(Define.viewBattle,"hideAddPower");
|
|
UIManager.getInstance().showView(Define.viewRevive);
|
|
|
|
}else{
|
|
//显示结算失败
|
|
WXHelper.instance.submitScore();
|
|
|
|
UserInfo.saveGoldData();
|
|
this.exitGame();
|
|
UIManager.getInstance().executeEvent(Define.viewBattle,"hideAddPower");
|
|
UIManager.getInstance().showView(Define.viewGameResult);
|
|
}
|
|
}.bind(this))
|
|
}
|
|
|
|
//视频或者点击金币复活了
|
|
reviveGame(){
|
|
UserInfo.god(3)
|
|
this.pauseStoneMove(false)
|
|
Common.isGameOver = false;
|
|
}
|
|
|
|
pauseStoneMove(isPause:boolean){
|
|
for (let index = 0; index < this.ballArr.length; index++) {
|
|
this.ballArr[index].pauseMove(isPause);
|
|
}
|
|
}
|
|
|
|
gameEventHide(){
|
|
console.log("gameEventHide")
|
|
cc.director.pause();
|
|
UserInfo.saveLastQuitTime()
|
|
}
|
|
|
|
gameEventShow(){
|
|
console.log("gameEventShow")
|
|
if(cc.director.isPaused()){
|
|
cc.director.resume();
|
|
}
|
|
if(UIManager.getInstance().isShow(Define.viewSelectCannon)){ //这里分享获得大炮
|
|
UIManager.getInstance().executeEvent(Define.viewSelectCannon);
|
|
}else if(UIManager.getInstance().isShow(Define.viewUpgrade)){
|
|
UIManager.getInstance().executeEvent(Define.viewUpgrade,);
|
|
}else if(UIManager.getInstance().isShow(Define.viewBattle)){
|
|
UIManager.getInstance().executeEvent(Define.viewBattle,"share");
|
|
}else if(UIManager.getInstance().isShow(Define.viewSelectScene)){
|
|
UIManager.getInstance().executeEvent(Define.viewSelectScene);
|
|
}
|
|
}
|
|
}
|
|
|