189 lines
4.7 KiB
TypeScript
189 lines
4.7 KiB
TypeScript
// 主游戏控制类
|
||
const {ccclass, property} = cc._decorator;
|
||
@ccclass
|
||
export default class GameManager extends cc.Component {
|
||
|
||
@property(cc.Node)
|
||
Map: cc.Node = null;
|
||
|
||
@property(cc.Prefab)
|
||
Block: cc.Prefab = null;
|
||
|
||
countTime: number;
|
||
block_Array: any;
|
||
|
||
|
||
onLoad () {
|
||
|
||
}
|
||
start () {
|
||
this.fit();
|
||
this.init();
|
||
}
|
||
//初始化数据
|
||
init(){
|
||
this.initMap();
|
||
|
||
}
|
||
|
||
initMap(){
|
||
this.block_Array = [];
|
||
let map = cc.fx.GameConfig.LEVEL_INFO[0].map;
|
||
for(let i=0;i<map.length;i++){
|
||
for(let j=0; j<map[i].length;j++){
|
||
let block = cc.instantiate(this.Block);
|
||
block.parent= this.Map;
|
||
block.getComponent("Block").initData(map[i][j]);
|
||
block.setPosition(cc.v2(-block.width*1.5 + j*block.width,-block.height*1.5 + i*block.height));
|
||
this.block_Array.push(block);
|
||
}
|
||
}
|
||
}
|
||
|
||
setModel(){
|
||
let time = 0.3;
|
||
let block2 = this.node.getChildByName("Block1").getChildByName("icon").getComponent(cc.Sprite);
|
||
let block = this.node.getChildByName("Block2").getChildByName("icon").getComponent(cc.Sprite);
|
||
let head = this.node.getChildByName("Head");
|
||
let block3 = this.node.getChildByName("Block3").getChildByName("icon").getComponent(cc.Sprite);
|
||
let block4 = this.node.getChildByName("Block4").getChildByName("icon").getComponent(cc.Sprite);
|
||
|
||
cc.tween(head)
|
||
.to(time,{position:cc.v3(-48,48,0)})
|
||
.to(time,{rotation:-90})
|
||
.to(time,{position:cc.v3(-144,48,0)})
|
||
.to(time,{rotation:-180})
|
||
.start();
|
||
cc.tween(block)
|
||
.delay(time)
|
||
.to(time,{fillRange:0.25})
|
||
.start();
|
||
|
||
cc.tween(block2)
|
||
.to(time,{fillRange:1})
|
||
.start();
|
||
|
||
cc.tween(block3)
|
||
.delay(time*2)
|
||
.to(time,{fillRange:1})
|
||
.start();
|
||
|
||
cc.tween(block4)
|
||
.delay(time*3)
|
||
.to(time,{fillRange:0.25})
|
||
.start();
|
||
}
|
||
|
||
//根据是否全面屏,做独立适配方面
|
||
fit(){
|
||
var jg = this.setFit();
|
||
if(!jg){
|
||
|
||
}
|
||
}
|
||
//判断全面屏
|
||
getSetScreenResolutionFlag () {
|
||
let size = cc.winSize;
|
||
let width = size.width;
|
||
let height = size.height;
|
||
if ((height / width) > (16.2 / 9)) return false;
|
||
return true;
|
||
}
|
||
//判断全面屏适配
|
||
setFit () {
|
||
let flag = this.getSetScreenResolutionFlag();
|
||
if (flag) {
|
||
} else {
|
||
}
|
||
return flag;
|
||
}
|
||
//返回首页
|
||
backScene(){
|
||
cc.director.loadScene("LoadScene");
|
||
}
|
||
//下一关,或者重新开始,或者返回上一关,根据level决定
|
||
reStart(type){
|
||
|
||
}
|
||
//获取时间戳
|
||
getTime(){
|
||
const timestamp = new Date().getTime();
|
||
return timestamp;
|
||
}
|
||
//获胜
|
||
passLevel(){
|
||
|
||
}
|
||
//失败
|
||
loseLevel(type){
|
||
//1: 1649
|
||
//2: 3646
|
||
//3: 5546
|
||
//4: 2600
|
||
//5: 694
|
||
}
|
||
|
||
//开始游戏
|
||
startGame(){
|
||
|
||
}
|
||
|
||
|
||
//如果是倒计时 调用此方法
|
||
updateCountDownTime () {
|
||
if (this.countTime > 0) {
|
||
this.countTime -= 1;
|
||
// this.time.string = cc.fx.GameTool.getTimeMargin(this.countTime);
|
||
if(this.countTime < 5){
|
||
// cc.tween(this.time.node)
|
||
// .to(0.25,{scale:1.5,color:cc.color(255,0,0)})
|
||
// .to(0.25,{scale:1,color:cc.color(255,255,255)})
|
||
// .start()
|
||
let over = this.node.getChildByName("Over");
|
||
cc.tween(over)
|
||
.to(0.2,{opacity:255})
|
||
.delay(0.1)
|
||
.to(0.2,{opacity:0})
|
||
.start();
|
||
}
|
||
if(this.countTime <= 0){
|
||
this.unschedule(this.updateCountDownTime);
|
||
var time = 0;
|
||
this.gameOver(time);
|
||
}
|
||
}
|
||
}
|
||
//上传每次操作数据
|
||
setData(){
|
||
cc.fx.GameTool.setGameData();
|
||
|
||
}
|
||
//上传排行榜数据
|
||
gameOver(time){
|
||
cc.fx.GameTool.setRank(time);
|
||
this.node.getChildByName("GameOver").active = true;
|
||
this.node.getChildByName("GameOver").opacity = 0;
|
||
cc.tween(this.node.getChildByName("GameOver"))
|
||
.to(0.4,{opacity:255})
|
||
.delay(2)
|
||
.to(0.4,{opacity:50})
|
||
.call(() =>{
|
||
cc.director.loadScene("OverScene");
|
||
})
|
||
.start()
|
||
}
|
||
|
||
clickSun(data){
|
||
|
||
}
|
||
|
||
onEnable () {
|
||
cc.fx.Notifications.on(cc.fx.Message.control, this.clickSun, this);
|
||
}
|
||
onDisable () {
|
||
cc.fx.Notifications.off(cc.fx.Message.control, this.clickSun);
|
||
}
|
||
update (dt) {
|
||
}
|
||
}
|