using AX.InputSystem;
using UnityEngine;
using UnityEngine.UI;
[RequireComponent(typeof(BaseGameObjInfo))]
[RequireComponent(typeof(CreateStaticObjID))]
[RequireComponent(typeof(Button))]
public abstract class BaseButton : MonoBehaviour
{
    public virtual void OnEnable()
    {
        this.GetComponent<Button>().onClick.AddListener(OnClick);
    }

    public virtual void OnDisable()
    {
        this.GetComponent<Button>().onClick.RemoveListener(OnClick);
    }

    public virtual void OnDestroy()
    {
        this.GetComponent<Button>().onClick.RemoveListener(OnClick);
    }

    public void OnClick()
    {
        var arg = new CmdArgs();
        arg.currentCursorPos = Input.mousePosition;
        RegisterUIInputEvent.RegisterUIInputHistory(gameObject, this.GetType().Name, "Click", arg);
        //Click(arg);
        RespondFun();
    }

    public void Click(CmdArgs arg)
    {
        if (GameSettings.othersSettings.isReplayMode)
        {
            if (!GameSettings.othersSettings.isReplayPause && !GameSettings.othersSettings.isReplayOver)
            {
                CursorManager.GetInstance.SetClick(arg);
            }
        }
        RespondFun();
    }

    public abstract void RespondFun();

}