using UnityEngine;
using UnityEngine.UI;
using TMPro;
///
/// Создаёт UI инвентаря программно.
/// Вызывается ТОЛЬКО из редакторных инструментов (InventorySceneSetup, PlayerBuilderTool).
/// Никакого runtime-создания: Start() отсутствует.
///
public class InventoryUIBuilder : MonoBehaviour
{
[Header("Settings")]
public int hotbarSlots = 9;
public int inventoryRows = 4;
public int inventoryCols = 9;
[Header("Visual Settings")]
public float slotSize = 50f;
public float slotSpacing = 4f;
public float inventoryPadding = 10f;
public float hotbarPadding = 10f;
[Header("Colors")]
[SerializeField] private Color inventoryPanelColor = new Color(0.15f, 0.15f, 0.15f, 0.95f);
[SerializeField] private Color hotbarPanelColor = new Color(0.1f, 0.1f, 0.1f, 0.9f);
[SerializeField] private Color slotEmptyColor = new Color(0.25f, 0.25f, 0.25f, 0.8f);
[Header("Container References")]
public RectTransform inventoryPanelRect;
public RectTransform hotbarPanelRect;
public Canvas inventoryCanvas;
// Созданные слоты — читаются редакторным инструментом после BuildInventoryUI()
[SerializeField] private Slot[] _inventorySlots;
[SerializeField] private Slot[] _hotbarSlots;
public Slot[] GetInventorySlots() => _inventorySlots;
public Slot[] GetHotbarSlots() => _hotbarSlots;
// ── Построение UI ────────────────────────────────────────────────────────
public void BuildInventoryUI()
{
// Получаем или добавляем Canvas
var canvas = GetComponent