using System;
using UnityEngine;

public static class GameObjectExpand
{
    public static ClickButton OnClick(this GameObject obj, Action callBack)
    {
        if (obj == null) return null;
        ClickEvent clickEvent = GetClickEvent(obj);
        ClickButton button = clickEvent.OnRegister<ClickButton>(callBack);
        return button;
    }

    public static DoubleClickButton OnDoubleClick(this GameObject obj, Action callBack)
    {
        if (obj == null) return null;
        ClickEvent clickEvent = GetClickEvent(obj);
        DoubleClickButton button = clickEvent.OnRegister<DoubleClickButton>(callBack);
        return button;
    }

    public static PressButton OnPress(this GameObject obj, Action callBack)
    {
        if (obj == null) return null;
        ClickEvent clickEvent = GetClickEvent(obj);
        PressButton button = clickEvent.OnRegister<PressButton>(callBack);
        return button;
    }

    static ClickEvent GetClickEvent(GameObject obj)
    {
        ClickEvent clickEvent = obj.GetComponent<ClickEvent>();
        if (clickEvent == null) clickEvent = obj.AddComponent<ClickEvent>();
        return clickEvent;
    }
}