Files
test/Assets/PerfectWorld/Scripts/UI/ShopItemPanel.cs
T
2026-03-25 10:35:58 +07:00

147 lines
3.7 KiB
C#

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)
{
if (itemData.buy[i].price / 100 == 0 && itemData.buy[i].price != 0)
{
gameObject.GetComponent<Button>().interactable = false;
}
else
{
bestPrice = itemData.buy[i].price / 100;
}
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;
}
}