using asap.core; using GameCore; using System.Linq; using UnityEngine; using UnityEngine.UI; namespace UI.Wheel { public abstract class AbstractWheelRewardCell : MonoBehaviour { #region Protected Fields protected Image bg; protected RewardItemNew reward; protected IWheelReward _wheelReward; #endregion #region Abstract Methods public abstract void SetData(IWheelReward wheelReward); public abstract void ShowUI(); protected abstract string GetBackgroundSprite(IWheelReward 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(IWheelReward wheelReward) { if (!reward) return; var itemData = GContext.container.Resolve().GetItemDataByDropIdAndTypeLureInflation(wheelReward.InflationRate, wheelReward.DropID); reward.SetData(itemData.FirstOrDefault()); reward.gameObject.SetActive(true); } protected virtual void SetBackground(IWheelReward wheelReward) { if (!bg) return; string spriteName = GetBackgroundSprite(wheelReward); if (string.IsNullOrEmpty(spriteName)) return; _ = GContext.container.Resolve().SetImageSprite(bg, spriteName); } #endregion } }