"use strict";
cc._RF.push(module, 'c58deN2u1NGZL8nJwvnu1PR', 'Block');
// Script/Block.ts

"use strict";
// 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
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 });
exports.PathType = exports.BlockType = void 0;
var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property;
var BlockType;
(function (BlockType) {
    /*普通地块 */
    BlockType[BlockType["Nomal"] = 0] = "Nomal";
    /*起点地块 */
    BlockType[BlockType["Start"] = 1] = "Start";
    /*湿地 */
    BlockType[BlockType["Nunja"] = 2] = "Nunja";
    /*山峰 */
    BlockType[BlockType["Peak"] = 3] = "Peak";
    /*终点地块 */
    BlockType[BlockType["End"] = 4] = "End";
    /*息壤 */
    BlockType[BlockType["Xi_Soil"] = 5] = "Xi_Soil";
    /*加固 */
    BlockType[BlockType["Reinforce"] = 6] = "Reinforce";
})(BlockType = exports.BlockType || (exports.BlockType = {}));
var PathType;
(function (PathType) {
    PathType["err"] = "err";
    PathType["up"] = "up";
    PathType["down"] = "down";
    PathType["left"] = "left";
    PathType["right"] = "right";
    PathType["up_left"] = "up_left";
    PathType["up_right"] = "up_right";
    PathType["down_left"] = "down_left";
    PathType["down_right"] = "down_right";
    PathType["left_up"] = "left_up";
    PathType["left_down"] = "left_down";
    PathType["right_up"] = "right_up";
    PathType["right_down"] = "right_down";
})(PathType = exports.PathType || (exports.PathType = {}));
var NewClass = /** @class */ (function (_super) {
    __extends(NewClass, _super);
    function NewClass() {
        var _this = _super !== null && _super.apply(this, arguments) || this;
        // LIFE-CYCLE CALLBACKS:
        _this.UI = null;
        return _this;
        // update (dt) {}
    }
    NewClass.prototype.onLoad = function () {
        this.finishi = false;
        this.pos_Shifting = 0;
    };
    NewClass.prototype.start = function () {
    };
    NewClass.prototype.initData = function (type) {
        this.block_Type = type;
        if (type == cc.Enum(BlockType).Start) {
            this.node.color = cc.color(245, 70, 70);
        }
        else if (type == cc.Enum(BlockType).End) {
            this.node.color = cc.color(20, 255, 0);
        }
        else if (type == cc.Enum(BlockType).Nunja) {
            this.node.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["e5"];
        }
        else if (type == cc.Enum(BlockType).Peak) {
            var random = Math.floor(Math.random() * 4 + 1);
            var name = "shan" + random;
            this.node.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"][name];
        }
    };
    NewClass.prototype.setPath = function (type) {
        this.path_Type = type;
    };
    NewClass.prototype.set_Xi_SoilType = function (direction, end) {
        var _this = this;
        console.log("息壤", direction);
        if (this.block_Type == cc.Enum(BlockType).Nunja) {
            this.block_Type = cc.Enum(BlockType).Nomal;
            this.node.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["block_Bg"];
        }
        if (end != null) {
            setTimeout(function () {
                cc.fx.Notifications.emit(cc.fx.Message.next, (end + 1));
            }, 1000);
        }
        this.block_Type = cc.Enum(BlockType).Xi_Soil;
        var target = this.node.getChildByName("Xi_Soil");
        this.path_Type = direction;
        target.active = true;
        target.opacity = 0;
        cc.tween(target)
            .to(0.5, { opacity: 255 })
            .to(0.5, { opacity: 0 })
            .call(function () {
            if (direction != null && end == null) {
                var data = {
                    order: 0,
                    time: 0.2,
                    type: 0,
                    circulate: false
                };
                _this.runWater(data);
            }
        })
            .start();
    };
    //洪峰执行
    NewClass.prototype.runWater = function (data) {
        if (this.path_Type == "err") {
            setTimeout(function () {
                if (data.circulate)
                    cc.fx.Notifications.emit(cc.fx.Message.next, order);
            }, data.time);
            return;
        }
        //如果双向都占用了还进来就算死了- 
        if (this.node.getChildByName("vertical").active == true && this.node.getChildByName("horizontal").active == true) {
            alert("河道已经交叉，不能再通过");
            return;
        }
        else if (this.node.getChildByName("turn").active == true && this.block_Type != cc.Enum(BlockType).Xi_Soil) {
            alert("河道过弯处，不能再交叉河道");
            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");
        var water1 = target.getChildByName("wave").getChildByName("water1");
        var water2 = target.getChildByName("wave").getChildByName("water2");
        var water3 = target.getChildByName("wave").getChildByName("water3");
        var timeDelay = 0.15;
        water1.runAction(cc.sequence(cc.moveTo(0.6, cc.v2(water1.x, 120)), cc.delayTime(timeDelay), cc.callFunc(function () {
            water1.y = -120;
        })).repeatForever());
        water2.runAction(cc.sequence(cc.moveTo(0.6, cc.v2(water2.x, 120)), cc.delayTime(timeDelay), cc.callFunc(function () {
            water2.y = -120;
        })).repeatForever());
        water3.runAction(cc.sequence(cc.moveTo(0.6, cc.v2(water3.x, 120)), cc.delayTime(timeDelay), cc.callFunc(function () {
            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");
            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");
            var water_1 = target.getChildByName("wave").getChildByName("water");
            water_1.opacity = 0;
            water_1.runAction(cc.sequence(cc.rotateTo(7.2, -1080), cc.delayTime(0)).repeatForever());
            setTimeout(function () {
                water_1.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") {
            console.log(data.order);
            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(time, { opacity: 255 })
                .call(function () {
                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;
            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.5, { opacity: 255 })
                .to(0.5, { opacity: 0 })
                .call(function () {
                if (data.circulate)
                    cc.fx.Notifications.emit(cc.fx.Message.next, order);
            })
                .start();
        }
        else if (this.path_Type == "End") {
            target.active = false;
            this.block_Type = cc.Enum(BlockType).Xi_Soil;
            target = this.node.getChildByName("End");
            target.active = true;
            target.opacity = 0;
            cc.tween(target)
                .to(0.5, { opacity: 255 })
                .call(function () {
                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(function () {
                    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(function () {
                    if (data.circulate)
                        cc.fx.Notifications.emit(cc.fx.Message.next, order);
                })
                    .start();
            }
        }
    };
    __decorate([
        property(cc.SpriteAtlas)
    ], NewClass.prototype, "UI", void 0);
    NewClass = __decorate([
        ccclass
    ], NewClass);
    return NewClass;
}(cc.Component));
exports.default = NewClass;

cc._RF.pop();