using DG.Tweening;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
using XFrame.Core.UI;
using XFrame.Core.Utils;
public class MainPanel : XUIPanel
{
    bool menuShow = true;
    RectTransform btnBG;
    Image arrow;
    Image downArrow;
    RectTransform outMinBg;
    public MainPanel() : base(UIType.Fixed, UIMode.None, UICollider.None)
    {
        uiPath = "UIPrefab/MainPanel";
    }
    public override void Awake(GameObject go)
    {
        arrow = this.transform.Find("BG/BtnBG/btn-arrow").GetComponent<Image>();
        downArrow = this.transform.Find("BG/TitleBG/img-downarrow").GetComponent<Image>();
        btnBG = this.transform.Find("BG/BtnBG").GetComponent<RectTransform>();
        outMinBg = this.transform.Find("BG/TitleBG/img-outminbg").GetComponent<RectTransform>();
        this.transform.Find("BG/BtnBG/btn-warning").GetComponent<Button>().onClick.AddListener(() =>
        {
            ShowPanel<WarningPanel>();
        });
        this.transform.Find("BG/BtnBG/btn-analysis").GetComponent<Button>().onClick.AddListener(() =>
        {
            ShowPanel<AnalysisPanel>();
        });
        arrow.GetComponent<Button>().onClick.AddListener(() =>
        {
            ShowHideMenu();
        });
        EventTrigger downArrowTrigger = downArrow.gameObject.AddComponent<EventTrigger>();
        downArrowTrigger.AddListener(EventTriggerType.PointerEnter, OnMoveEnterDownArrow);
        EventTrigger outMinBgTrigger = outMinBg.gameObject.AddComponent<EventTrigger>();
        outMinBgTrigger.AddListener(EventTriggerType.PointerExit, OnMoveExitDownArrow);
    }
    private void ShowHideMenu()
    {
        if (menuShow)
        {
            btnBG.DOAnchorPos(new Vector3(-170, 0, 0), 0.5f).SetEase(Ease.InOutBack).OnComplete(() =>
            {
                arrow.sprite = SpriteUtils.CreateSprite("Texture/UI/Button/arrowRight");
                menuShow = false;
            });
        }
        else
        {
            btnBG.DOAnchorPos(new Vector3(0, 0, 0), 0.5f).SetEase(Ease.InOutBack).OnComplete(() =>
            {
                arrow.sprite = SpriteUtils.CreateSprite("Texture/UI/Button/arrowLeft");
                menuShow = true;
            });
        }
    }
    private void OnMoveEnterDownArrow(PointerEventData eventData)
    {
        outMinBg.gameObject.SetActive(true);
        outMinBg.DOScale(new Vector3(1, 1, 1), 0.1f).SetEase(Ease.Linear);
    }
    private void OnMoveExitDownArrow(PointerEventData eventData)
    {
        outMinBg.DOScale(new Vector3(1, 0, 1), 0.1f).SetEase(Ease.Linear).OnComplete(() =>
        {
            outMinBg.gameObject.SetActive(false);
        });
    }
}