using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class CraftingUI : MonoBehaviour { public CraftingSystem craftingSystem; public Inventory inventory; public Transform recipeContainer; public GameObject recipeButtonPrefab; public Text messageText; public Text selectedRecipeText; public Font uiFont; private readonly List recipeButtons = new List(); private RecipeData selectedRecipe; private void OnEnable() { if (craftingSystem != null) { craftingSystem.OnCraftingChanged += RefreshRecipeButtons; } if (inventory != null) { inventory.OnInventoryChanged += RefreshRecipeButtons; } BuildRecipeList(); } private void OnDisable() { if (craftingSystem != null) { craftingSystem.OnCraftingChanged -= RefreshRecipeButtons; } if (inventory != null) { inventory.OnInventoryChanged -= RefreshRecipeButtons; } } public void BuildRecipeList() { ClearRecipeButtons(); if (craftingSystem == null || recipeContainer == null || recipeButtonPrefab == null) { return; } ConfigureRecipeContainer(); for (int i = 0; i < craftingSystem.availableRecipes.Count; i++) { RecipeData recipe = craftingSystem.availableRecipes[i]; if (recipe == null) { continue; } GameObject buttonObject = Instantiate(recipeButtonPrefab, recipeContainer); buttonObject.SetActive(true); ConfigureRecipeButtonFrame(buttonObject, i); recipeButtons.Add(buttonObject); Button button = buttonObject.GetComponent