using UnityEngine;
using TMPro;
using UnityEngine.UI;

public class TooltipUI : MonoBehaviour
{
    [SerializeField] private GameObject _tooltipWindow;
    [SerializeField] private TextMeshProUGUI _titleText;
    [SerializeField] private TextMeshProUGUI _descriptionText;
    [SerializeField] private TextMeshProUGUI _infoText; // 강화 수치나 타입 등
    [SerializeField] private Image _icon;

    private RectTransform rectTransform;

    private void Awake()
    {
        rectTransform = _tooltipWindow.GetComponent<RectTransform>();
        HideTooltip();
    }

    private void Update()
    {

    }

    public void ShowTooltip(ItemInstance item, RectTransform slotRect)
    {
        _icon.sprite = item.Data.Icon;
        _titleText.text = item.Data.ItemName;
        _descriptionText.text = item.Data.Description;

        //무기일 경우
        if (item.Data.ItemType == ItemType.EQUIPMENT)
        {
            _infoText.text =
                $"공격력 : 00\n방어력 : 00";
        }
        else if (item.Data.ItemType == ItemType.CONSUMABLE)
        {
            _infoText.text =
                $"회복량 : 00";
        }


        _tooltipWindow.SetActive(true);
        //UpdateToolTip(item); // 텍스트 갱신

        // 레이아웃 강제 갱신 (텍스트 길이에 따라 변한 툴팁 크기를 즉시 반영)
        LayoutRebuilder.ForceRebuildLayoutImmediate(rectTransform);

        // 기본 위치 설정 (슬롯의 오른쪽)
        Vector3[] slotCorners = new Vector3[4];
        slotRect.GetWorldCorners(slotCorners);

        Vector3 targetPos = slotCorners[2];
        rectTransform.pivot = new Vector2(0f, 1f); // 툴팁 피벗을 좌상단으로

        // 화면 잘림 검사
        float tooltipWidth = rectTransform.rect.width;
        // 툴팁의 우측 끝 좌표가 화면 너비보다 크면 왼쪽으로 뒤집기
        if (targetPos.x + tooltipWidth > Screen.width)
        {
            targetPos = slotCorners[1]; // 슬롯의 좌측 상단 모서리
            rectTransform.pivot = new Vector2(1f, 1f); // 툴팁 피벗을 우상단으로 변경
        }

        rectTransform.position = targetPos;
    }

    public void HideTooltip()
    {
        _tooltipWindow.SetActive(false);
    }
}