WaterControl/assets/Script/Block.ts
2024-08-16 14:17:58 +08:00

796 lines
31 KiB
TypeScript
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.

// Learn TypeScript:
// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html
// Learn Attribute:
// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html
// Learn life-cycle callbacks:
// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html
const {ccclass, property} = cc._decorator;
export enum BlockType{
/*普通地块 */
Nomal = 0,
/*起点地块 */
Start = 1,
/*湿地 */
Nunja = 2,
/*山峰 */
Peak = 3,
/*终点地块 */
End = 4,
/*息壤 */
Xi_Soil = 5,
/*加固 */
Reinforce = 6
}
export enum PathType{
err = "err",
up = "up",
down = "down",
left = "left",
right = "right",
up_left = "up_left",
up_right = "up_right",
down_left = "down_left",
down_right = "down_right",
left_up = "left_up",
left_down = "left_down",
right_up = "right_up",
right_down = "right_down",
}
@ccclass
export default class NewClass extends cc.Component {
// LIFE-CYCLE CALLBACKS:
@property(cc.SpriteAtlas)
UI: cc.SpriteAtlas = null;
pos_Shifting:number;
block_Type:number;
path_Type:string;
finishi:boolean;
pos: any;
onLoad () {
this.finishi = false;
this.pos_Shifting = 0;
this.pos = cc.v2(0,0);
}
start () {
}
/**
* 息壤过后改变修筑路径
* @param order 建筑地图数组里的执行的序列号
* @param number 息壤执行长度,改变息壤用后其他路径的X或Y值
* @param direction 只为两个方向横向false,纵向true
* @param road 建筑地图数组或者洪峰路径数组可理解为路径数组path_Array water_Array
*/
//初始化地图块数据
initData(type,pos,max){
this.block_Type = type;
this.pos = cc.v2(pos.x,pos.y);
// if(this.pos.y%2 == 0) this.node.getChildByName("tip").active = true;
if(type == cc.Enum(BlockType).Start){
var bg = this.node.getChildByName("sp");
// this.node.getComponent(cc.Sprite).spriteFrame = null;
// bg.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["start"];
if(cc.fx.GameConfig.GM_INFO.level > 3){
// bg.getChildByName("start").y = 20;
bg.getChildByName("end").y = 20;
}
this.rotateTarget(bg,"start",pos,max);
}
else if(type == cc.Enum(BlockType).End){
var bg = this.node.getChildByName("sp");
// this.node.getComponent(cc.Sprite).spriteFrame = null;
bg.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["end"];
if(cc.fx.GameConfig.GM_INFO.level > 3){
// bg.getChildByName("start").y = 20;
bg.getChildByName("end").y = 20;
}
this.rotateTarget(bg,"end",pos,max);
}
else if(type == cc.Enum(BlockType).Nunja){
let random = Math.floor(Math.random()*4);
let rotationArr = [0,90,180,270];
let rotation = rotationArr[random];
this.node.getChildByName("bg").getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["e5"];
this.node.getChildByName("bg").angle = -rotation;
this.node.getComponent(cc.Sprite).spriteFrame = null;
}
else if(type == cc.Enum(BlockType).Peak){
let random = Math.floor(Math.random()*4+1);
let name = "shan" + random;
this.node.getChildByName("bg").getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"][name];
this.node.getComponent(cc.Sprite).spriteFrame = null;
}
if(cc.fx.GameConfig.GM_INFO.level == 1){
this.node.getChildByName("tipWin").opacity = 220;
this.node.getChildByName("tipLose").opacity = 220;
}
else if(cc.fx.GameConfig.GM_INFO.level == 2){
this.node.getChildByName("tipWin").opacity = 100;
this.node.getChildByName("tipLose").opacity = 100;
}
else if(cc.fx.GameConfig.GM_INFO.level == 3){
this.node.getChildByName("tipWin").opacity = 50;
this.node.getChildByName("tipLose").opacity = 50;
}
else if(cc.fx.GameConfig.GM_INFO.level > 3){
this.node.getChildByName("tipWin").opacity = 0;
this.node.getChildByName("tipLose").opacity = 0;
}
}
//旋转入海口和出海口的 图片以及文字角度
rotateTarget(bg,name,pos,max){
let target = bg.getChildByName(name);
if(pos.y == max.y-1){
bg.angle = 0;
if(name == "end") target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["end_x"];
target.active = true;
target.angle = 0;
return;
}
else if(pos.y == 0){
bg.angle = -180;
if(name == "end")target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["end_x"];
target.active = true;
target.angle = -180;
return;
}
else if(pos.x == max.x-1){
bg.angle = 90;
if(name == "start")target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["start_y"];
else target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["end_y"];
target.active = true;
target.angle = -90;
}
else if(pos.x == 0){
bg.angle = -90;
if(name == "start")target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["start_y"];
else target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["end_y"];
target.active = true;
target.angle = 90;
}
}
setPath(type){
this.path_Type = type;
}
//设置息壤在起点
set_Xi_Soil(direction,type){
let sp = this.node.getChildByName("sp");
let turn = this.node.getChildByName("turnStart");
let water = this.node.getChildByName("waterStart");
if(direction == "left" || direction == "right"){
if(sp.angle == 0){
turn.active =true;
water.active = true;
water.opacity = 0;
if(type){
turn.angle = direction=="left"?90:0;
water.angle = direction=="left"?90:0;
}
else{
turn.angle = direction=="left"?0:90;
water.angle = direction=="left"?0:90;
}
}
else if(sp.angle == -180){
turn.active =true;
water.active = true;
water.opacity = 0;
if(type){
turn.angle = direction=="left"?-180:-90;
water.angle = direction=="left"?-180:-90;
}
else{
turn.angle = direction=="left"?270:-180;
water.angle = direction=="left"?270:-180;
}
}
else if(sp.angle == -90){
turn.active =true;
turn.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["a1"];
turn.angle = 90;
if(type){
water.active = true;
water.angle = 90;
water.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["block1"];
water.opacity = 0;
}
}
else if(sp.angle == 90){
turn.active =true;
turn.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["a1"];
turn.angle = 90;
if(type){
water.active = true;
water.angle = 90;
water.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["block1"];
water.opacity = 0;
}
}
}
else if(direction == "up" || direction == "down"){
let sp = this.node.getChildByName("sp");
if(sp.angle == -90){
turn.active =true;
water.active = true;
water.opacity = 0;
if(type){
turn.angle = direction=="up"?0:-90;
water.angle = direction=="up"?0:-90;
}
else{
turn.angle = direction=="up"?-90:0;
water.angle = direction=="up"?-90:0;
}
}
else if(sp.angle == 90){
turn.active = true;
water.active = true;
water.opacity = 0;
if(type){
turn.angle = direction=="up"?90:180;
water.angle = direction=="up"?90:180;
}
else{
turn.angle = direction=="up"?180:90;
water.angle = direction=="up"?180:90;
}
}
else if(sp.angle == 0){
turn.active =true;
turn.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["a1"];
turn.angle = 0;
if(type){
water.active = true;
water.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["block1"];
water.opacity = 0;
}
}
else if(sp.angle == -180){
turn.active =true;
turn.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["a1"];
turn.angle = 0;
if(type){
water.active = true;
water.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["block1"];
water.opacity = 0;
}
}
}
}
//息壤具体执行方法 外部可调用
set_Xi_SoilType(direction,end,name){
// console.log("息壤",direction,name,end);
var jg = this.repeatRoad(true,direction);
console.log("息壤重复判断结果",jg);
if(jg == true){
cc.fx.Notifications.emit(cc.fx.Message.showResult,"lose");
return;
}
if(this.block_Type == cc.Enum(BlockType).Start){
this.set_Xi_Soil(direction,false);
return;
}
if(this.block_Type == cc.Enum(BlockType).Nunja){
this.block_Type = cc.Enum(BlockType).Nomal;
this.node.getChildByName("bg").getComponent(cc.Sprite).spriteFrame = null;
this.node.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["block_Bg"];
}
if(end != null){
if(this.block_Type == cc.Enum(BlockType).End){
this.finishi = true;
setTimeout(() => {
this.set_Xi_Soil(direction,true);
}, 500);
}
setTimeout(() => {
if(name == "water") cc.fx.Notifications.emit(cc.fx.Message.nextWater,(end+1));
else cc.fx.Notifications.emit(cc.fx.Message.next,(end+1));
}, 400);
}
if(this.block_Type != cc.Enum(BlockType).End && this.block_Type != cc.Enum(BlockType).Start){
this.block_Type = cc.Enum(BlockType).Xi_Soil;
}
else{
}
let target = this.node.getChildByName("Xi_Soil");
this.path_Type = direction;
target.active = true;
target.opacity = 0;
cc.tween(target)
.to(0.1,{opacity:255})
.to(0.1,{opacity:0})
.call(() =>{
if(direction != null && end == null){
let data = {
order:0,
time:cc.fx.GameConfig.TIME_INFO.waterSpeed[0],
type:0,
circulate:false
};
if(name == "water"){
this.runWater(data);
}
else this.runRoad(data);
}
})
.start();
}
//判断重复路径
repeatRoad(type,direction){
//如果双向都占用了还进来就算死了-
var jg = false;
if(this.node.getChildByName("vertical2").active == true && this.node.getChildByName("horizontal2").active == true){
// alert("治水失败");
jg = true;
if(type){
cc.fx.Notifications.emit(cc.fx.Message.showResult,"lose");
}
}
else if(this.node.getChildByName("turn2").active == true && this.block_Type != cc.Enum(BlockType).Xi_Soil){
// alert("治水失败");
jg = true;
if(type){
cc.fx.Notifications.emit(cc.fx.Message.showResult,"lose");
}
}
if(direction){
if(this.node.getChildByName("vertical2").active == true && this.block_Type == cc.Enum(BlockType).Xi_Soil && (direction == "up"|| direction =="down")){
// alert("治水失败");
if(this.node.getChildByName("vertical2").angle == 0 || this.node.getChildByName("vertical2").angle == 180 ){
jg = true;
if(type){
cc.fx.Notifications.emit(cc.fx.Message.showResult,"lose");
}
}
}
else if(this.node.getChildByName("vertical2").active == true && this.block_Type == cc.Enum(BlockType).Xi_Soil && (direction == "right"|| direction =="left")){
// alert("治水失败");
if(this.node.getChildByName("vertical2").angle == 90 || this.node.getChildByName("vertical2").angle == 270 ){
jg = true;
if(type){
cc.fx.Notifications.emit(cc.fx.Message.showResult,"lose");
}
}
}
}
return jg;
}
//修筑路线执行
runRoad(data){
if(this.path_Type == "err"){
setTimeout(() => {
if(data.circulate)
cc.fx.Notifications.emit(cc.fx.Message.next,order);
}, data.time);
return;
}
var jg = this.repeatRoad(true,null);
if(jg == true) return;
var target = null;
var progress = 1;
var time = data.time;
var order = data.order + 1;
var random = Math.floor(Math.random()*4 + 1);
target = this.node.getChildByName("vertical2");
if(target.name == "vertical"){
let water1 = target.getChildByName("wave").getChildByName("water1");
let water2 = target.getChildByName("wave").getChildByName("water2");
let water3 = target.getChildByName("wave").getChildByName("water3");
let timeDelay = 0.15;
water1.runAction(cc.sequence(cc.moveTo(0.6,cc.v2(water1.x,120)),cc.delayTime(timeDelay),
cc.callFunc(()=>{
water1.y = -120
})).repeatForever());
water2.runAction(cc.sequence(cc.moveTo(0.6,cc.v2(water2.x,120)),cc.delayTime(timeDelay),
cc.callFunc(()=>{
water2.y = -120
})).repeatForever());
water3.runAction(cc.sequence(cc.moveTo(0.6,cc.v2(water3.x,120)),cc.delayTime(timeDelay),
cc.callFunc(()=>{
water3.y = -120
})).repeatForever());
}
var name = "a" + random;
if(this.block_Type != cc.Enum(BlockType).Reinforce)target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"][name];
if(target.active == true){
target = this.node.getChildByName("horizontal2");
name = "b" + random;
if(this.block_Type != cc.Enum(BlockType).Reinforce) target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"][name];
}
// console.log(this.path_Type,data.order);
if(this.path_Type == cc.Enum(PathType).up){
}
else if(this.path_Type == cc.Enum(PathType).down){
target.angle = 180;
}
else if(this.path_Type == cc.Enum(PathType).left){
target.angle = 90;
name = "b" + random;
if(this.block_Type != cc.Enum(BlockType).Reinforce) target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"][name];
}
else if(this.path_Type == cc.Enum(PathType).right){
target.angle = 270;
name = "b" + random;
if(this.block_Type != cc.Enum(BlockType).Reinforce) target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"][name];
}
else{
target = this.node.getChildByName("turn2");
if(target.name == "turn"){
let water = target.getChildByName("wave").getChildByName("water");
water.opacity = 0
water.runAction(cc.sequence(cc.rotateTo(7.2,-1080),cc.delayTime(0)).repeatForever());
setTimeout(() => {
water.opacity = 255;
}, 200);
}
name = "c" + random;
if(this.block_Type != cc.Enum(BlockType).Reinforce)target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"][name];
progress = 0.25;
if(this.path_Type == cc.Enum(PathType).up_left){
target.setPosition(-this.pos_Shifting,-this.pos_Shifting);
}
else if(this.path_Type == cc.Enum(PathType).up_right){
target.scaleX = -1;
target.setPosition(this.pos_Shifting,-this.pos_Shifting);
}
else if(this.path_Type == cc.Enum(PathType).down_left){
target.angle = 180;
target.scaleX = -1;
target.setPosition(-this.pos_Shifting,this.pos_Shifting);
}
else if(this.path_Type == cc.Enum(PathType).down_right){
target.angle = 180;
target.setPosition(this.pos_Shifting,this.pos_Shifting);
}
else if(this.path_Type == cc.Enum(PathType).left_up){
target.angle = -90;
target.scaleY = -1;
target.setPosition(this.pos_Shifting,this.pos_Shifting);
}
else if(this.path_Type == cc.Enum(PathType).left_down){
target.angle = 90;
target.setPosition(-this.pos_Shifting,-this.pos_Shifting);
}
else if(this.path_Type == cc.Enum(PathType).right_up){
target.angle = -90;
target.setPosition(-this.pos_Shifting,this.pos_Shifting);
}
else if(this.path_Type == cc.Enum(PathType).right_down){
target.angle = -90;
target.scaleX = -1;
target.setPosition(-this.pos_Shifting,-this.pos_Shifting);
}
}
if(this.path_Type == "Reinforce"){
target = this.node.getChildByName("Reinforce");
if(this.block_Type == cc.Enum(BlockType).Peak){
cc.fx.Notifications.emit(cc.fx.Message.showResult,"lose");
return;
}
if(this.block_Type != cc.Enum(BlockType).End)this.block_Type = cc.Enum(BlockType).Reinforce;
this.node.getChildByName("vertical2").getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["e1"];
this.node.getChildByName("turn2").getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["e3"];
this.node.getChildByName("horizontal2").getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["e2"];
target.active = true;
target.opacity = 0;
progress = 1;
cc.tween(target)
.to(cc.fx.GameConfig.TIME_INFO.ReinforceSpeed,{opacity:255})
.call(() =>{
if(data.circulate)
cc.fx.Notifications.emit(cc.fx.Message.changeMap,order);
cc.fx.Notifications.emit(cc.fx.Message.next,order);
})
.start();
}
else if(this.path_Type == "Xi_Soil"){
target.active = false;
if(this.block_Type != cc.Enum(BlockType).End && this.block_Type != cc.Enum(BlockType).Start)
this.block_Type = cc.Enum(BlockType).Xi_Soil;
target = this.node.getChildByName("Xi_Soil");
target.active = true;
target.opacity = 0;
cc.tween(target)
.to(0.01,{opacity:1})
.to(0.01,{opacity:0})
.call(() =>{
if(data.circulate){
cc.fx.Notifications.emit(cc.fx.Message.next,order);
}
})
.start();
}
else if(this.path_Type == "End"){
target.active = false;
if(this.block_Type != cc.Enum(BlockType).End && this.block_Type != cc.Enum(BlockType).Start)
this.block_Type = cc.Enum(BlockType).Xi_Soil;
let posTemp = data.last;
var direction = "up";
if(this.pos.x - posTemp.x >= 1){
direction = "right";
}
else if(this.pos.x - posTemp.x <= -1){
direction = "left";
}
else if(this.pos.y - posTemp.y >= 1){
direction = "down";
}
// console.log("结束方向:",direction);
if(!this.finishi){
this.finishi = true;
this.set_Xi_Soil(direction,true);
}
}
else{
target.active = true;
if(this.block_Type != cc.Enum(BlockType).Xi_Soil){
target.getComponent(cc.Sprite).fillRange = 0;
cc.tween(target.getComponent(cc.Sprite))
.to(time,{fillRange:progress})
.call(() =>{
if(data.circulate)
cc.fx.Notifications.emit(cc.fx.Message.next,order);
})
.start();
}
else{
target.opacity = 0;
target.getComponent(cc.Sprite).fillRange = 1;
cc.tween(target)
.to(time,{opacity:255})
.call(() =>{
if(data.circulate)
cc.fx.Notifications.emit(cc.fx.Message.next,order);
})
.start();
}
}
}
//洪峰执行
runWater(data){
if(this.node.getChildByName("waterStart").active == true && this.block_Type == cc.Enum(BlockType).Start){
// sp.getChildByName("waterStart").opacity = 255;
cc.tween(this.node.getChildByName("waterStart"))
.to(0.2,{opacity:255})
.start();
}
if(this.path_Type == "err"){
setTimeout(() => {
if(data.circulate)
cc.fx.Notifications.emit(cc.fx.Message.nextWater,order);
}, data.time);
return;
}
//如果双向都占用了还进来就算死了-
if(this.node.getChildByName("vertical").active == true && this.node.getChildByName("horizontal").active == true){
// alert("治水失败");
cc.fx.Notifications.emit(cc.fx.Message.showResult,"lose");
// cc.director.loadScene("GameScene");
return;
}
else if(this.node.getChildByName("turn").active == true && this.block_Type != cc.Enum(BlockType).Xi_Soil){
// alert("治水失败");
cc.fx.Notifications.emit(cc.fx.Message.showResult,"lose");
// cc.director.loadScene("GameScene");
return;
}
var target = null;
var progress = 1;
var time = data.time;
var order = data.order + 1;
var random = Math.floor(Math.random()*4 + 1);
target = this.node.getChildByName("vertical");
if(target.name == "vertical"){
let water1 = target.getChildByName("wave").getChildByName("water1");
let water2 = target.getChildByName("wave").getChildByName("water2");
let water3 = target.getChildByName("wave").getChildByName("water3");
let timeDelay = 0.15;
water1.runAction(cc.sequence(cc.moveTo(0.6,cc.v2(water1.x,120)),cc.delayTime(timeDelay),
cc.callFunc(()=>{
water1.y = -120
})).repeatForever());
water2.runAction(cc.sequence(cc.moveTo(0.6,cc.v2(water2.x,120)),cc.delayTime(timeDelay),
cc.callFunc(()=>{
water2.y = -120
})).repeatForever());
water3.runAction(cc.sequence(cc.moveTo(0.6,cc.v2(water3.x,120)),cc.delayTime(timeDelay),
cc.callFunc(()=>{
water3.y = -120
})).repeatForever());
}
var name = "a" + random;
// if(this.block_Type != cc.Enum(BlockType).Reinforce)target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"][name];
if(target.active == true){
target = this.node.getChildByName("horizontal");
let water1 = target.getChildByName("wave").getChildByName("water1");
let water2 = target.getChildByName("wave").getChildByName("water2");
let water3 = target.getChildByName("wave").getChildByName("water3");
let timeDelay = 0.15;
water1.runAction(cc.sequence(cc.moveTo(0.6,cc.v2(water1.x,120)),cc.delayTime(timeDelay),
cc.callFunc(()=>{
water1.y = -120
})).repeatForever());
water2.runAction(cc.sequence(cc.moveTo(0.6,cc.v2(water2.x,120)),cc.delayTime(timeDelay),
cc.callFunc(()=>{
water2.y = -120
})).repeatForever());
water3.runAction(cc.sequence(cc.moveTo(0.6,cc.v2(water3.x,120)),cc.delayTime(timeDelay),
cc.callFunc(()=>{
water3.y = -120
})).repeatForever());
name = "b" + random;
//if(this.block_Type != cc.Enum(BlockType).Reinforce) target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"][name];
}
// console.log(this.path_Type,data.order);
if(this.path_Type == cc.Enum(PathType).up){
}
else if(this.path_Type == cc.Enum(PathType).down){
target.angle = 180;
}
else if(this.path_Type == cc.Enum(PathType).left){
target.angle = 90;
name = "b" + random;
//if(this.block_Type != cc.Enum(BlockType).Reinforce) target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"][name];
}
else if(this.path_Type == cc.Enum(PathType).right){
target.angle = 270;
name = "b" + random;
//if(this.block_Type != cc.Enum(BlockType).Reinforce) target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"][name];
}
else{
target = this.node.getChildByName("turn");
if(target.name == "turn"){
let water = target.getChildByName("wave").getChildByName("water");
water.opacity = 0
water.runAction(cc.sequence(cc.rotateTo(7.2,-1080),cc.delayTime(0)).repeatForever());
setTimeout(() => {
water.opacity = 255;
}, 200);
}
name = "c" + random;
//if(this.block_Type != cc.Enum(BlockType).Reinforce)target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"][name];
progress = 0.25;
if(this.path_Type == cc.Enum(PathType).up_left){
target.setPosition(-this.pos_Shifting,-this.pos_Shifting);
}
else if(this.path_Type == cc.Enum(PathType).up_right){
target.scaleX = -1;
target.setPosition(this.pos_Shifting,-this.pos_Shifting);
}
else if(this.path_Type == cc.Enum(PathType).down_left){
target.angle = 180;
target.scaleX = -1;
target.setPosition(-this.pos_Shifting,this.pos_Shifting);
}
else if(this.path_Type == cc.Enum(PathType).down_right){
target.angle = 180;
target.setPosition(this.pos_Shifting,this.pos_Shifting);
}
else if(this.path_Type == cc.Enum(PathType).left_up){
target.angle = -90;
target.scaleY = -1;
target.setPosition(this.pos_Shifting,this.pos_Shifting);
}
else if(this.path_Type == cc.Enum(PathType).left_down){
target.angle = 90;
target.setPosition(-this.pos_Shifting,-this.pos_Shifting);
}
else if(this.path_Type == cc.Enum(PathType).right_up){
target.angle = -90;
target.setPosition(-this.pos_Shifting,this.pos_Shifting);
}
else if(this.path_Type == cc.Enum(PathType).right_down){
target.angle = -90;
target.scaleX = -1;
target.setPosition(-this.pos_Shifting,-this.pos_Shifting);
}
}
if(this.path_Type == "End"){
target.active = false;
if(this.block_Type == cc.Enum(BlockType).End){
if(this.node.getChildByName("waterStart").active == true && this.block_Type == cc.Enum(BlockType).End){
cc.tween(this.node.getChildByName("waterStart"))
.to(0.2,{opacity:255})
.call(()=>{
// alert("治水成功");
cc.fx.Notifications.emit(cc.fx.Message.showResult,"win");
if(cc.fx.GameConfig.GM_INFO.level < 7){
cc.fx.GameConfig.GM_INFO.level += 1;
}
setTimeout(() => {
// cc.director.loadScene("GameScene");
}, 500);
})
.start();
}
}
else{
target = this.node.getChildByName("End");
target.active = true;
target.opacity = 0;
let posTemp = data.last;
if(this.pos.x - posTemp.x >= 1){
target.angle = -90;
}
else if(this.pos.x - posTemp.x <= -1){
target.angle = 90;
}
else if(this.pos.y - posTemp.y >= 1){
target.angle = 180;
}
cc.tween(target)
.to(0.5,{opacity:255})
.call(() =>{
// alert("治水失败")
cc.fx.Notifications.emit(cc.fx.Message.showResult,"lose");
// cc.director.loadScene("GameScene");
})
.start();
}
}
else{
target.active = true;
target.getComponent(cc.Sprite).fillRange = 0;
cc.tween(target.getComponent(cc.Sprite))
.to(time,{fillRange:progress})
.call(() =>{
if(data.circulate)
cc.fx.Notifications.emit(cc.fx.Message.nextWater,order);
})
.start();
}
}
// update (dt) {}
}