import { _decorator, Component, Node, Animation } from 'cc';
import { dpImpl } from './dpImpl';
const { ccclass, property } = _decorator;

@ccclass('dpComponent')
export class dpComponent extends Component {

    //plane移动动画
    @property(Animation)
    public p_an:Animation = null;

    private dpSpeed:number = 0;

    @property
    public _dpType = dpImpl.dpType.TYPE1;

    /**控制敌人运动和子弹类型的轮数 */
    private ns:number = 0;

    /**是否是组合出现 */
    private isarr:number = 0;

    //飞行最大距离
    public dp_max:number = 12;

    private mx: any = 1;

    start() {

        this.p_an.crossFade('p_an', .5);
    }

    update(deltaTime: number) {
        //敌人逻辑0：发射单排子弹，横线运动
        //敌人逻辑1：发射单排子弹，向我方p的z轴靠近
        //敌人逻辑2：发射散射子弹，横线运动
        //敌人逻辑3：发射散射子弹，向我方p的z轴靠近

        //前10秒出现的单个敌人 0/1随机一种
        //20-60秒出现的敌人如果是单个 1/2随机一种，组合出现 0/2随机一种
        //60秒以上 单个1/2/3随机一种，组合0/1/2随机一种

        /** 此类中只对敌人路线做逻辑处理，子弹发射在子弹类中 */
        if(this.node.position.x>3.8) this.mx = -1;
        if(this.node.position.x<-3.8) this.mx = 1;

        const pos = this.node.position;
        let movez = pos.z + this.dpSpeed;

        this.node.setPosition(this.node.position.x + 0.03 * this.mx, pos.y, movez);

        if(movez > this.dp_max) this.node.destroy();

    }

    public _init(speed:number,n:number,a:number){
        this.dpSpeed = speed;
        this.ns = n;
        this.isarr = a;
    }

    /**向我方z轴靠近 */
    public moveToP(){
        //控制this.node.x轴逐步接近玩家的x值

    }
}

