WaterControl/library/imports/b0/b0432040-dbde-438c-839c-ba2b5d18a3b5.js
2024-07-12 17:38:10 +08:00

402 lines
15 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"use strict";
cc._RF.push(module, 'b0432BA295DjIOcuitdGKO1', 'GameManager');
// Script/GameManager.ts
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
Object.defineProperty(exports, "__esModule", { value: true });
var Block_1 = require("./Block");
// 主游戏控制类
var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property;
var GameManager = /** @class */ (function (_super) {
__extends(GameManager, _super);
function GameManager() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.Map = null;
_this.Block = null;
return _this;
}
GameManager.prototype.onLoad = function () {
};
GameManager.prototype.start = function () {
this.fit();
this.init();
};
//初始化数据
GameManager.prototype.init = function () {
this.initMap();
};
//初始化地图
GameManager.prototype.initMap = function () {
this.block_Array = [];
this.path_Array = [];
this.map_Array = [];
this.map_Array = cc.fx.GameConfig.LEVEL_INFO[0][0].map;
//将地图x,y轴切换
for (var m = 0; m < Math.floor(this.map_Array.length / 2); m++) {
for (var n = 0; n < this.map_Array[m].length; n++) {
var temp = this.map_Array[m][n];
this.map_Array[m][n] = this.map_Array[n][m];
this.map_Array[n][m] = temp;
}
}
for (var i = 0; i < this.map_Array.length; i++) {
for (var j = 0; j < this.map_Array[i].length; j++) {
var block = cc.instantiate(this.Block);
block.parent = this.Map;
block.getComponent("Block").initData(this.map_Array[i][j]);
if (this.map_Array[i][j] == cc.Enum(Block_1.BlockType).Start)
this.path_Array.push(cc.v3(i, j, cc.Enum(Block_1.BlockType).Nomal));
block.setPosition(cc.v2(-block.width * 1.5 + i * block.width, block.height * 1.5 - j * block.height));
this.block_Array.push(block);
}
}
};
//开始后,按玩家操作,将路径中地图块放入数组中
GameManager.prototype.setMap = function (data) {
for (var i = 0; i < data.length; i++) {
var start = this.path_Array[this.path_Array.length - 1];
switch (data[i]) {
case "up":
this.path_Array.push(cc.v3(start.x, start.y - 1, cc.Enum(Block_1.BlockType).Nomal));
break;
case "down":
this.path_Array.push(cc.v3(start.x, start.y + 1, cc.Enum(Block_1.BlockType).Nomal));
break;
case "left":
this.path_Array.push(cc.v3(start.x - 1, start.y, cc.Enum(Block_1.BlockType).Nomal));
break;
case "right":
this.path_Array.push(cc.v3(start.x + 1, start.y, cc.Enum(Block_1.BlockType).Nomal));
break;
case "reinforce":
this.path_Array.push(cc.v3(0, 0, cc.Enum(Block_1.BlockType).Reinforce));
break;
case "soil":
this.path_Array.push(cc.v3(0, 0, cc.Enum(Block_1.BlockType).Xi_Soil));
break;
}
}
this.runWater(0);
};
GameManager.prototype.setModel = function () {
var time = 0.3;
var block2 = this.node.getChildByName("Block1").getChildByName("icon").getComponent(cc.Sprite);
var block = this.node.getChildByName("Block2").getChildByName("icon").getComponent(cc.Sprite);
var head = this.node.getChildByName("Head");
var block3 = this.node.getChildByName("Block3").getChildByName("icon").getComponent(cc.Sprite);
var 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();
};
//开始执行洪峰来了的动画
GameManager.prototype.runWater = function (order) {
order = parseInt(order);
if (order <= this.path_Array.length - 1) {
var i = this.path_Array[order].x * this.map_Array[0].length + this.path_Array[order].y;
var direction = "";
var circulate = true;
if (order == this.path_Array.length - 1) {
circulate = false;
direction = this.getDirection(order - 1);
if (direction == "up" || direction == "right_up" || direction == "left_up") {
direction = "up";
}
else if (direction == "down" || direction == "left_down" || direction == "right_down") {
direction = "down";
}
else if (direction == "left" || direction == "up_left" || direction == "down_left") {
direction = "left";
}
else if (direction == "right" || direction == "up_right" || direction == "down_right") {
direction = "right";
}
}
else {
direction = this.getDirection(order);
}
var target = this.block_Array[i].getComponent("Block");
target.setPath(direction);
var data = {
order: order,
time: 0.3,
type: this.path_Array[order].z,
circulate: circulate
};
target.runWater(data);
}
};
//获取洪峰方向
GameManager.prototype.getDirection = function (order) {
var name = "";
//入海口比较复杂单独判断
if (order == 0) {
var nextX = this.path_Array[order + 1].x - this.path_Array[order].x;
var nextY = this.path_Array[order].y - this.path_Array[order + 1].y;
//在底边
if (this.path_Array[order].y == this.map_Array.length - 1) {
if (nextX == 0) {
if (nextY == 1)
name = "up";
else if (nextY == -1)
name = "err";
}
else if (nextX == 1)
name = "up_right";
else if (nextX == -1)
name = "up_left";
}
//在顶边
else if (this.path_Array[order].y == 0) {
if (nextX == 0) {
if (nextY == 1)
name = "err";
else if (nextY == -1)
name = "down";
}
else if (nextX == 1)
name = "down_right";
else if (nextX == -1)
name = "down_left";
}
//在左边
else if (this.path_Array[order].x == 0) {
if (nextX == 0) {
if (nextY == 1)
name = "right_up";
else if (nextY == -1)
name = "right_down";
}
else if (nextX == 1)
name = "right";
else if (nextX == -1)
name = "err";
}
//在右边
else if (this.path_Array[order].x == this.map_Array[0].length - 1) {
if (nextX == 0) {
if (nextY == 1)
name = "left_up";
else if (nextY == -1)
name = "left_down";
}
else if (nextX == 1)
name = "err";
else if (nextX == -1)
name = "left";
}
}
//不是第一步,已经走过一步
else if (order > 0) {
//用于判断此点的上一个点,是为了判断当前方块洪水七点,以及下一个移动方向,判断洪终点方向
var nextX = this.path_Array[order + 1].x - this.path_Array[order].x;
var nextY = this.path_Array[order].y - this.path_Array[order + 1].y;
var previousX = this.path_Array[order].x - this.path_Array[order - 1].x;
var previousY = this.path_Array[order - 1].y - this.path_Array[order].y;
if (previousX == 0 && previousY == 1) {
if (nextX == 0) {
if (nextY == 1)
name = "up";
else if (nextY == -1)
name = "err";
}
else if (nextX == 1)
name = "up_right";
else if (nextX == -1)
name = "up_left";
}
else if (previousX == 0 && previousY == -1) {
if (nextX == 0) {
if (nextY == 1)
name = "err";
else if (nextY == -1)
name = "down";
}
else if (nextX == 1)
name = "down_right";
else if (nextX == -1)
name = "down_left";
}
else if (previousX == 1 && previousY == 0) {
if (nextX == 0) {
if (nextY == 1)
name = "right_up";
else if (nextY == -1)
name = "right_down";
}
else if (nextX == 1)
name = "right";
else if (nextX == -1)
name = "err";
}
else if (previousX == -1 && previousY == 0) {
if (nextX == 0) {
if (nextY == 1)
name = "left_up";
else if (nextY == -1)
name = "left_down";
}
else if (nextX == 1)
name = "err";
else if (nextX == -1)
name = "left";
}
}
return name;
};
//根据是否全面屏,做独立适配方面
GameManager.prototype.fit = function () {
var jg = this.setFit();
if (!jg) {
}
};
//判断全面屏
GameManager.prototype.getSetScreenResolutionFlag = function () {
var size = cc.winSize;
var width = size.width;
var height = size.height;
if ((height / width) > (16.2 / 9))
return false;
return true;
};
//判断全面屏适配
GameManager.prototype.setFit = function () {
var flag = this.getSetScreenResolutionFlag();
if (flag) {
}
else {
}
return flag;
};
//返回首页
GameManager.prototype.backScene = function () {
cc.director.loadScene("LoadScene");
};
//下一关或者重新开始或者返回上一关根据level决定
GameManager.prototype.reStart = function (type) {
};
//获取时间戳
GameManager.prototype.getTime = function () {
var timestamp = new Date().getTime();
return timestamp;
};
//获胜
GameManager.prototype.passLevel = function () {
};
//失败
GameManager.prototype.loseLevel = function (type) {
//1: 1649
//2: 3646
//3: 5546
//4: 2600
//5: 694
};
//开始游戏
GameManager.prototype.startGame = function (data) {
this.setMap(data);
};
//如果是倒计时 调用此方法
GameManager.prototype.updateCountDownTime = function () {
if (this.countTime > 0) {
this.countTime -= 1;
// this.time.string = cc.fx.GameTool.getTimeMargin(this.countTime);
if (this.countTime < 5) {
var 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);
}
}
};
//上传每次操作数据
GameManager.prototype.setData = function () {
cc.fx.GameTool.setGameData();
};
//上传排行榜数据
GameManager.prototype.gameOver = function (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(function () {
cc.director.loadScene("OverScene");
})
.start();
};
GameManager.prototype.clickSun = function (data) {
};
GameManager.prototype.nextWater = function () {
};
GameManager.prototype.onEnable = function () {
cc.fx.Notifications.on(cc.fx.Message.control, this.clickSun, this);
cc.fx.Notifications.on(cc.fx.Message.next, this.runWater, this);
cc.fx.Notifications.on(cc.fx.Message.startGame, this.startGame, this);
};
GameManager.prototype.onDisable = function () {
cc.fx.Notifications.off(cc.fx.Message.control, this.clickSun);
cc.fx.Notifications.off(cc.fx.Message.next, this.runWater);
cc.fx.Notifications.off(cc.fx.Message.startGame, this.startGame);
};
GameManager.prototype.update = function (dt) {
};
__decorate([
property(cc.Node)
], GameManager.prototype, "Map", void 0);
__decorate([
property(cc.Prefab)
], GameManager.prototype, "Block", void 0);
GameManager = __decorate([
ccclass
], GameManager);
return GameManager;
}(cc.Component));
exports.default = GameManager;
cc._RF.pop();