using BrewMonster.Scripts.Managers; using UnityEngine; using UnityEngine.UI; using TMPro; using PerfectWorld.Scripts.Managers; public class ShopItemPanel : MonoBehaviour { [Header("UI Components")] public TextMeshProUGUI itemNameText; public TextMeshProUGUI itemPriceText; public Image itemIconImage; public TextMeshProUGUI itemQuantityText; public Button itemButton; private GShopItem itemData; private ShopUIManager shopManager; void Start() { if (itemButton != null) { itemButton.onClick.AddListener(OnItemClicked); } } public void SetupItem(GShopItem item, ShopUIManager manager) { itemData = item; shopManager = manager; UpdateDisplay(); } void UpdateDisplay() { if (itemData.id == 0) return; // Set item name if (itemNameText != null) itemNameText.text = itemData.name; // Set item quantity if (itemQuantityText != null) itemQuantityText.text = $"x{itemData.num}"; // Find the best buy option (first non-zero price) uint bestPrice = 0; for (int i = 0; i < itemData.buy.Length; i++) { if (itemData.buy[i].price > 0) { bestPrice = itemData.buy[i].price; break; } } // Set item price if (itemPriceText != null) itemPriceText.text = bestPrice.ToString(); // Load icon based on item ID if (itemIconImage != null) { LoadItemIcon(itemIconImage, (int)itemData.id); } } void LoadItemIcon(Image iconImage, int itemId) { if (itemId <= 0) { Debug.LogWarning($"Invalid item ID for icon loading: {itemId}"); return; } // Use the existing icon loading system from EC_IvtrItem Sprite iconSprite = EC_IvtrItemUtils.Instance.ResolveItemIconSprite(itemId); if (iconSprite != null) { iconImage.sprite = iconSprite; Debug.Log($"Successfully loaded icon for item ID: {itemId}"); } else { Debug.LogWarning($"Failed to load icon for item ID: {itemId}"); // Optionally set a default icon or clear the current one iconImage.sprite = null; } } void OnItemClicked() { if (shopManager != null && itemData.id != 0) { shopManager.ShowItemDetail(itemData); } } void OnDestroy() { if (itemButton != null) { itemButton.onClick.RemoveListener(OnItemClicked); } } public void ResetPanel() { // Clear item data itemData = new GShopItem(); shopManager = null; // Reset UI display if (itemNameText != null) itemNameText.text = ""; if (itemPriceText != null) itemPriceText.text = ""; if (itemQuantityText != null) itemQuantityText.text = ""; if (itemIconImage != null) itemIconImage.sprite = null; // Reset transform transform.localPosition = Vector3.zero; transform.localRotation = Quaternion.identity; transform.localScale = Vector3.one; } public bool IsInUse() { return itemData.id != 0; } }