/**
 * 主角散弹技能
 */
import BObject from "../../../bullet/BObject";
import FSprite, { SpriteActionType } from "../../FSprite";
import SkillShotgun from "../SkillShotgun";

const {ccclass, property} = cc._decorator;

@ccclass
export default class MShotgun extends SkillShotgun {

    onLoad () {
        this.sprite = this.node.getComponent(FSprite);
    }
    /**
     * 释放技能
     */
    public exe(target:FSprite,callback:()=>void){
        this.time = new Date().getTime();
        // this.sprite.setDir({x:0,y:0});
        
        //-----播放开始动画
        let bNode = cc.instantiate(this.mBullet)
        let bobject = bNode.getComponent(BObject)
        let sf = bobject.mStartEffect

        let x = this.sprite.mAtkSite.worldX * this.sprite.spine.node.scaleX
        let y = this.sprite.mAtkSite.worldY

        let pos = cc.v2(x, y);
        let sfNode = cc.instantiate(sf)
        sfNode.angle = this.sprite.wAngle
        sfNode.setPosition(pos);
        sfNode.parent = this.sprite.node
        let startSpine: sp.Skeleton = sfNode.getComponent(sp.Skeleton)
        startSpine.setCompleteListener(() => {
            startSpine.setCompleteListener(null);
            sfNode.destroy()
            if(callback){
                callback()
            }
        });
        startSpine.setAnimation(0, 'atk', false);
        //----开始动画播放结束

        // this.sprite.playAction(SpriteActionType.atk,false,()=>{
        //     if(this.sprite.isWalk){
        //         this.sprite.playAction(SpriteActionType.run,true)
        //     }else{
        //         this.sprite.playAction(SpriteActionType.stand,true)
        //     }
        // });
        let tp = undefined
        if(target){
            tp = target.node.getPosition();
            tp.y += target.node.height/2
        }else{
            // let angle = this.sprite.wAngle;

            // let hd = angle * Math.PI / 180;
            let y = this.sprite.moveV2.y * 300 + this.node.y
            let x = this.sprite.moveV2.x * 300 + this.node.x;
            tp = cc.v2(x,y + 40)
        }
        for (let i = 0; i < this.count; i++) {
            this.fire(i,tp);
        }
    }
}