import { _decorator, Component, EventMouse, Node } from 'cc';
const { ccclass, property } = _decorator;

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

    onMouseUp?: Function;
    onMouseLeftUp?: Function;
    onMouseRightUp?: Function;

    onMouseDown?: Function;
    onMouseLeftDown?: Function;
    onMouseRightDown?: Function;

    start() {
        this.node.on(Node.EventType.MOUSE_UP,this._onMouseUp,this);
        this.node.on(Node.EventType.MOUSE_DOWN,this._onMouseDown,this);
    }

    private _onMouseUp(event:EventMouse){
        if (this.onMouseUp) this.onMouseUp();

        switch (event.getButton()) {
            case EventMouse.BUTTON_LEFT:
                if (this.onMouseLeftUp) this.onMouseLeftUp();
                break;
            case EventMouse.BUTTON_RIGHT:
                if (this.onMouseRightUp) this.onMouseRightUp();
                break;
            default:
                break;
        }
    }

    private _onMouseDown(event:EventMouse){
        if (this.onMouseDown) this.onMouseDown();

        switch (event.getButton()) {
            case EventMouse.BUTTON_LEFT:
                if (this.onMouseLeftDown) this.onMouseLeftDown();
                break;
            case EventMouse.BUTTON_RIGHT:
                if (this.onMouseRightDown) this.onMouseRightDown();
                break;
            default:
                break;
        }
    }

    update(deltaTime: number) {
        
    }
}


