/**
 * 选项，图片
 */

cc.Class({
    extends: cc.Component,

    properties: {
        // 图片
        pic: {
            default: null,
            type: cc.Sprite,
        },

        _opId: 0, // 选项id
        _ori_pos: null, // 初始位置
        _isEnter: false, // 是否碰到上面的选项框
    },

    onLoad() {
        this.nodePos = this.node.getPosition();

        this.node.on("touchmove", this.onTouchMove, this);
        this.node.on("touchend", this.onTouchEnd, this);
        this.node.on("touchcancel", this.onTouchEnd, this);
    },

    setPic(url) {
        cc.loader.load({ url }, (err, img) => {
            const spriteFrame = new cc.SpriteFrame(img);
            this.pic.spriteFrame = spriteFrame;
        });
    },

    //触摸移动；
    onTouchMove(event) {
        var self = this;
        var touches = event.getTouches();
        //触摸刚开始的位置
        var oldPos = self.node.convertToNodeSpaceAR(touches[0].getStartLocation());
        //触摸时不断变更的位置
        var newPos = self.node.convertToNodeSpaceAR(touches[0].getLocation());

        var subPos = oldPos.sub(newPos); // 2.X版本是 p1.sub(p2);

        self.node.x = self.nodePos.x - subPos.x;
        self.node.y = self.nodePos.y - subPos.y;

        // 控制节点移不出屏幕;
        var minX = -cc.view.getVisibleSize().width / 2 + self.node.width / 2; //最小X坐标；
        var maxX = Math.abs(minX);
        var minY = -cc.view.getVisibleSize().height / 2 + self.node.height / 2; //最小Y坐标；
        var maxY = Math.abs(minY);
        var nPos = self.node.getPosition(); //节点实时坐标；

        if (nPos.x < minX) {
            nPos.x = minX;
        }
        if (nPos.x > maxX) {
            nPos.x = maxX;
        }
        if (nPos.y < minY) {
            nPos.y = minY;
        }
        if (nPos.y > maxY) {
            nPos.y = maxY;
        }
        self.node.setPosition(nPos);
    },
    onTouchEnd() {
        this.nodePos = this.node.getPosition(); //获取触摸结束之后的node坐标；
        if (this._isEnter) {
            console.log("enter right");
        } else {
            console.log("enter right");
            this.node.setPosition(this._ori_pos);
        }
    },

    /**
     * 当碰撞产生的时候调用
     * @param  {Collider} other 产生碰撞的另一个碰撞组件
     * @param  {Collider} self  产生碰撞的自身的碰撞组件
     */
    onCollisionEnter: function (other, self) {
        console.log("on collision");
        if (other.getComponent("op_sound")._opId == this._opId) {
            this._isEnter = true;
        }
    },

    /**
     * 当碰撞结束后调用
     * @param  {Collider} other 产生碰撞的另一个碰撞组件
     * @param  {Collider} self  产生碰撞的自身的碰撞组件
     */
    onCollisionExit: function (other, self) {
        console.log("on collision exit");
        this._isEnter = false;
    },

    resetPos() {
        // cc.tween(this.node).to()
    },
});
