using UnityEngine;
using UnityEngine.UI;

public class FurniturePaletteUI : MonoBehaviour
{
    [Header("UI Элементы")]
    public GameObject palettePanel;      // Панель, которая выезжает с цветами
    public Transform contentContainer;   // Объект с Horizontal/Grid Layout Group
    public GameObject colorBtnTemplate;  // Префаб кнопки цвета

    private FurnitureVisuals _currentVisuals;

    public void ShowColors(FurnitureObject furniture)
    {
        if (furniture == null || furniture.runtimeItemData == null) return;
        
        _currentVisuals = furniture.GetComponent<FurnitureVisuals>();
        if (_currentVisuals == null || furniture.runtimeItemData.availablePresets.Count <= 1) 
        {
            palettePanel.SetActive(false);
            return; 
        }

        palettePanel.SetActive(true);

        foreach (Transform child in contentContainer)
        {
            Destroy(child.gameObject);
        }

        foreach (FurniturePreset preset in furniture.runtimeItemData.availablePresets)
        {
            GameObject btnObj = Instantiate(colorBtnTemplate, contentContainer);
            btnObj.transform.localScale = Vector3.one; 
            Image img = btnObj.GetComponent<Image>();
            if (img != null && preset.presetIcon != null)
            {
                img.sprite = preset.presetIcon;
            }

            Button btn = btnObj.GetComponent<Button>();
            FurniturePreset presetToApply = preset; 
            
            btn.onClick.AddListener(() => 
            {
                if (_currentVisuals != null)
                {
                    _currentVisuals.ApplyPreset(presetToApply);
                }
            });
        }

        // ==========================================
        // МАГИЯ ДЛЯ МОМЕНТАЛЬНОГО ИЗМЕНЕНИЯ РАЗМЕРА
        // ==========================================
        // Заставляем Unity принудительно пересчитать размер панели под новые кнопки
        LayoutRebuilder.ForceRebuildLayoutImmediate(palettePanel.GetComponent<RectTransform>());
    }

    public void HideColors()
    {
        palettePanel.SetActive(false);
        _currentVisuals = null;
    }
}