// 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 () {
        
    }

    initData(type,pos,max){
        this.block_Type = type;
        this.pos = cc.v2(pos.x,pos.y);
        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"];
            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"];
            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;
        }
    }
    //旋转入海口和出海口的 图片以及文字角度
    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"?-90:0;
                    water.angle = direction=="up"?-90:0;
                }
                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,this.block_Type);
        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.set_Xi_Soil(direction,true);
            }
            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();
    }


    //修筑路线执行
    runRoad(data){
        if(this.path_Type == "err"){
            setTimeout(() => {
                if(data.circulate)
                    cc.fx.Notifications.emit(cc.fx.Message.next,order);
            }, data.time);
            return;
        }
        //如果双向都占用了还进来就算死了- 
        if(this.node.getChildByName("vertical2").active == true && this.node.getChildByName("horizontal2").active == true){
            alert("河道已经交叉，不能再通过");
            cc.director.loadScene("GameScene");
            return;
        }

        else if(this.node.getChildByName("turn2").active == true && this.block_Type != cc.Enum(BlockType).Xi_Soil){
            alert("河道过弯处，不能再交叉河道");
            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("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).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.x - posTemp.x == -1){
                direction = "down";
            }
           
            // console.log("方向:",direction);
            this.set_Xi_Soil(direction,true);
            
            // alert("治水成功");
            // target = this.node.getChildByName("End"); 
            // target.active = true;
            // target.opacity = 0;
            // cc.tween(target)
            // .to(0.5,{opacity:255})
            // .call(() =>{
            //     console.log("游戏结束");
            //     // if(data.circulate)
            //     //     cc.fx.Notifications.emit(cc.fx.Message.next,order);
            // })
            // .start();
        }
        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.director.loadScene("GameScene");
            return;
        }

        else if(this.node.getChildByName("turn").active == true && this.block_Type != cc.Enum(BlockType).Xi_Soil){
            alert("河道过弯处，不能再交叉河道");
            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 == "Reinforce"){
        //     target = this.node.getChildByName("Reinforce");
        //     this.block_Type = cc.Enum(BlockType).Reinforce;
        //     // this.node.getChildByName("vertical").getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["e1"];
        //     // this.node.getChildByName("turn").getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["e3"];
        //     // this.node.getChildByName("horizontal").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.nextWater,order);
        //     })
        //     .start();
        // }
        // else if(this.path_Type == "Xi_Soil"){
        //     target.active = false;
        //     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.nextWater,order);
        //         }
                    
        //     })
        //     .start();
        // }
        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("治水成功");
                        if(cc.fx.GameConfig.GM_INFO.level < 7){
                            cc.fx.GameConfig.GM_INFO.level += 1;
                        }
                        cc.director.loadScene("GameScene");
                    })
                    .start();
                }
            }
            else{
                target = this.node.getChildByName("End"); 
                target.active = true;
                target.opacity = 0;
                cc.tween(target)
                .to(0.5,{opacity:255})
                .call(() =>{
                    alert("治水失败")
                    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) {}
}
