Files
ft/Client/Assets/Scripts/Capsule/Reward/AbstractWheelRewardCell.cs
2026-06-29 21:18:33 +08:00

52 lines
1.7 KiB
C#

using System.Linq;
using asap.core;
using GameCore;
using UnityEngine;
using UnityEngine.UI;
namespace Capsule.Reward
{
public abstract class AbstractCapsuleRewardCell : MonoBehaviour
{
#region Protected Fields
protected Image bg;
protected RewardItemNew reward;
protected ICapsuleReward _rewardData;
#endregion
#region Abstract Methods
public abstract void SetData(ICapsuleReward wheelReward);
public abstract void ShowUI();
protected abstract string GetBackgroundSprite(ICapsuleReward reward);
#endregion
#region Initialization
protected virtual void Awake()
{
bg = this.transform.Find(nameof(bg))?.GetComponent<Image>();
reward = this.GetComponentInChildren<RewardItemNew>();
reward?.gameObject.SetActive(false);
}
#endregion
#region Common Methods
protected virtual void SetRewardItem(ICapsuleReward rewardData)
{
if (!reward) return;
var itemData = GContext.container.Resolve<PlayerItemData>().GetItemDataByDropIdAndTypeLureInflation(rewardData.InflationRate, rewardData.DropID);
reward.SetData(itemData.FirstOrDefault());
reward.gameObject.SetActive(true);
}
protected virtual void SetBackground(ICapsuleReward rewardData)
{
if (!bg)
return;
string spriteName = GetBackgroundSprite(rewardData);
if (string.IsNullOrEmpty(spriteName))
return;
_ = GContext.container.Resolve<IUIService>().SetImageSprite(bg, spriteName);
}
#endregion
}
}