// 对手削球，从右侧到右侧

cc.Class({
    extends: cc.Component,

    properties: {
        
    },

    // LIFE-CYCLE CALLBACKS:

    onLoad () {
        this.initValues();
        this.initNodes();
    },

    start () {
        this.initActions();
    },

    // 初始化
    initValues:function () {
        // 配置绘制的数据
        // 从配置中心获取数据
        this.config = require ("gameconfig")
        // 配置绘制组件
        this.g = this.getComponent(cc.Graphics);

        // 记录下节点
        this.poses = new Array();
        this.beginPos = cc.v2(-95, 263);
        this.centerPos = cc.v2(-75, 58);
        this.endPos = cc.v2(-66, -163);
    },

    // 初始化子节点
    initNodes:function() {
        this.head = new cc.Node("");
        this.head.setPosition(this.beginPos);
        this.head.parent = this.node;
    },

    // 初始化头部节点的运动
    initActions:function() {
        var bezier_01 = [this.beginPos, cc.v2(-230, 410), this.centerPos];
        var move_01 = cc.bezierTo(1, bezier_01);
        var move_01_End = cc.callFunc(this.move_01_End, this);
        var bezier_02 = [this.centerPos, cc.v2(-125, 40), this.endPos];
        var move_02 = cc.bezierTo(1, bezier_02);
        var move_02_End = cc.callFunc(this.move_02_End, this);

        this.head.runAction(cc.sequence(move_01, move_01_End, move_02, move_02_End));
    },

    // 第一步动作结束
    move_01_End:function() {
        cc.log ("Move 01 End ... ")
    },

    // 第二部动作结束
    move_02_End:function() {
        cc.log ("Move 02 End ... ")
    },

    // 外部调用
    ballStop:function() {

    },

    // 

    // 绘图
    draw:function() {
        this.g.clear();

        // 画脑袋和身体
        this.g.lineWidth = this.config.CIRCLE_WIDTH

        // 画个头部
        this.g.fillColor.fromHEX('#ff00000');
        this.g.circle(this.head.x, this.head.y, this.config.HEAD_SIZE);
        this.g.close();
        this.g.stroke();
        this.g.fill();
        
        var pos = this.poses[0];
        this.g.lineWidth = 3;
        this.g.moveTo(pos.x, pos.y)
        for (var i = 0; i < this.poses.length; i++) {
            var getPos = this.poses[i];
            this.g.lineTo(getPos.x, getPos.y);
        }

        this.g.stroke();

    },

    update (dt) {
        // 记录当前的位置
        var news = [this.head.position];
        // 在结合当前的数组
        this.poses = news.concat(this.poses);
        // 如果数组长度大于20，则将最后一个删除
        if (this.poses.length > 20) {
            this.poses.pop();
        }

        this.draw();
    },
});
