/*
 * @Author: WoNiu
 * @Date: 2024-03-13 12:19:50
 * @LastEditTime: 2024-03-22 22:49:20
 * @LastEditors: WoNiu
 * @Description:
 */
import { _decorator, EventMouse, Node } from 'cc';
import { BaseSprite } from '../../GlobalScript/CommonComponent/BaseSprite';
import { NpkImage } from '../../Tool/NPKImage';
import { BaseButton, BaseButtonState } from '../../GlobalScript/CommonComponent/BaseButton';
import { BaseButtonAction } from '../../GlobalScript/CommonComponent/BaseButtonAction';
const { ccclass } = _decorator;


/// 投骰子按钮的整个节点
@ccclass('DiceButtonNode')
export class DiceButtonNode extends Node {

    winButtonComponent: BaseButton;
    spaceButtonComponent: BaseButton;

    winButtonBlock: Function;
    spaceDownBlock: Function;
    spaceUpBlock: Function;

    constructor(){
        super();

        const backgroundNode = new Node();
        const bs = backgroundNode.addComponent( BaseSprite );
        bs.updateSpriteFrame(NpkImage.ingame,7);
        this.addChild(backgroundNode);

        /// 其他获胜条件
        const winButtonNode = new Node();
        this.addChild(winButtonNode);
        winButtonNode.setPosition(20.5,-123);

        const winBa = winButtonNode.addComponent(BaseButtonAction);
        winBa.onMouseUp = this.winOnMouseUp.bind(this);

        this.winButtonComponent = winButtonNode.addComponent( BaseButton );
        this.winButtonComponent.init(NpkImage.ingame,60)


        /// space
        const spaceButtonNode = new Node();
        this.addChild(spaceButtonNode);
        spaceButtonNode.setPosition(89,-57);

        const spaceBc = spaceButtonNode.addComponent( BaseButtonAction);
        spaceBc.onMouseLeftDown = this.spaceOnMouseDown.bind(this);
        spaceBc.onMouseLeftUp = this.spaceOnMouseUp.bind(this);

        this.spaceButtonComponent = spaceButtonNode.addComponent( BaseButton );
        this.spaceButtonComponent.init(NpkImage.ingame,8);
        this.spaceButtonComponent.ButtonState = BaseButtonState.Disable;

    }

    /// 其他获胜条件
    private winOnMouseUp(event:EventMouse){
        if (this.winButtonComponent.ButtonState == BaseButtonState.Disable ) return;
        if (this.winButtonBlock) this.winButtonBlock();
    }

    /// 投骰子
    private spaceOnMouseDown(event:EventMouse){
        if (this.spaceButtonComponent.ButtonState == BaseButtonState.Disable ) return;
        if (this.spaceDownBlock) this.spaceDownBlock();
    }
    private spaceOnMouseUp(event: EventMouse){
        if (this.spaceButtonComponent.ButtonState == BaseButtonState.Disable ) return;
        if (this.spaceUpBlock) this.spaceUpBlock();
    }

}
