Files
bansonic_beta_main/Assets/mailSystem/rewardSlotPrefab.cs
T
2026-06-30 21:21:30 +08:00

88 lines
2.4 KiB
C#

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
public class rewardSlotPrefab : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler
{
public Image borderIconImg;
public Sprite[] borderIconSprites;
public Image rewardIcon;
public Text rewardName;
public Text rewardAmount;
public GameObject detailBtm;
public Text detailText;
void OnEnable()
{
if (detailBtm != null) detailBtm.SetActive(false);
}
public void BindReward(mail_so.rewardItem reward)
{
if (reward == null)
{
ApplyBorderSprite(ItemRarity.None);
return;
}
MailRewardGrantService.PopulateRewardDisplay(reward);
if (rewardName != null) rewardName.text = reward.rewardName;
if (rewardAmount != null) rewardAmount.text = reward.reward_ammount == 1 ? string.Empty : reward.reward_ammount.ToString();
if (rewardIcon != null) rewardIcon.sprite = reward.reward_image;
if (detailText != null) detailText.text = reward.reward_description;
if (!MailRewardGrantService.TryGetRewardRarity(reward, out ItemRarity rarity))
{
rarity = ItemRarity.None;
}
ApplyBorderSprite(rarity);
}
private void ApplyBorderSprite(ItemRarity rarity)
{
if (borderIconImg == null)
{
return;
}
Sprite sprite = ResolveBorderSprite(rarity);
borderIconImg.sprite = sprite;
borderIconImg.enabled = sprite != null;
}
private Sprite ResolveBorderSprite(ItemRarity rarity)
{
if (borderIconSprites != null && borderIconSprites.Length > 0)
{
int enumIndex = (int)rarity;
if (enumIndex >= 0 && enumIndex < borderIconSprites.Length)
{
Sprite sprite = borderIconSprites[enumIndex];
if (sprite != null)
{
return sprite;
}
}
if (borderIconSprites[0] != null)
{
return borderIconSprites[0];
}
}
return null;
}
public void OnPointerEnter(PointerEventData eventData)
{
if (detailBtm != null) detailBtm.SetActive(true);
}
public void OnPointerExit(PointerEventData eventData)
{
if (detailBtm != null) detailBtm.SetActive(false);
}
}