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(); reward = this.GetComponentInChildren(); reward?.gameObject.SetActive(false); } #endregion #region Common Methods protected virtual void SetRewardItem(ICapsuleReward rewardData) { if (!reward) return; var itemData = GContext.container.Resolve().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().SetImageSprite(bg, spriteName); } #endregion } }