140 lines
3.5 KiB
C#
140 lines
3.5 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)
|
|
{
|
|
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;
|
|
}
|
|
}
|