import { AudioMgr } from "../../../../main/ViewManage";
import { SpriteActionType } from "../../object/FSprite";
import BaseEvent from ".././base/BaseEvent";

/**
 * 能被打碎的箱子
 */
const { ccclass, property } = cc._decorator;

@ccclass
export default class FHitBox extends BaseEvent {

    @property(sp.Skeleton)
    spine: sp.Skeleton = null;

    @property({
        displayName: '靠近的提示',
        type: cc.Node
    })
    icon: cc.Node = null;

    @property({
        displayName: '打碎后显示',
        type: cc.Node
    })
    hide: cc.Node = null;

    @property({
        displayName: '提示图标',
        type: cc.SpriteFrame
    })
    mTipsIcon: cc.SpriteFrame = null;

    private isOver = false;
    onLoad() {
        super.onLoad()
        if (this.icon) {
            this.icon.active = false;
        }
        if (this.hide && this.hide.isValid) {
            this.hide.active = false;
        }
    }
    start() {
        if (this.hide) {
            if (this.ff.mMap.checkIn(this.hide.name)) {
                this.node.destroy()
            }
        }
    }

    onBeginContact(contact: cc.PhysicsContact, self: cc.PhysicsCollider, other: cc.PhysicsCollider) {
        if (other.node.group == 'bullet') {
            this.onBegin(self.tag)
        }

    }
    onBegin(tag: number) {
        if (this.isOver) {
            return
        }
        this.isOver = true
        this.hitBox()

    }

    public hitBox() {
        // this.onEnd(1)
        // this.ff.pauseSprite(true)
        this.node.removeComponent(cc.PhysicsBoxCollider)
        this.node.removeComponent(cc.PhysicsBoxCollider)
        // element.useHammer()
        // element.playAction2(SpriteActionType.chuizi, false, () => {
        //     this.ff.pauseSprite(false)
        //     element.playAction2(SpriteActionType.stand, true);
        //     element.updateSkin()
        // })
        if (this.spine) {
            this.spine.setCompleteListener(() => {
                this.node.destroy();
            })
            if (this.hide && this.hide.isValid) {
                this.hide.active = true;
            }
            this.spine.setAnimation(0, 'boom', false);
        }
        this.ff.main.playerEffectByPath(AudioMgr.wooden);
    }
}
