using System.Threading.Tasks; using Capsule.Reward; using DG.Tweening; using UnityEngine; namespace Capsule.Pack.UIPanel { public class CapsuleRewardCell : AbstractCapsuleRewardCell { private GameObject bg1; private GameObject bg2; private GameObject bg3; [SerializeField] private Vector2 startPos; [SerializeField] private Vector2 endPos; [SerializeField] private float time; [SerializeField] private Ease easeCurve; [SerializeField] private float startAlpha=0; private Rigidbody2D _rigidbody2D; public Rigidbody2D Rigidbody2D=>_rigidbody2D??=GetComponent(); private CanvasGroup _canvasGroup; private CanvasGroup CanvasGroup=>_canvasGroup??=gameObject.GetOrAddComponent(); private CapsuleCollider2D _collider; public CapsuleCollider2D Collider=>_collider??=GetComponent(); public RectTransform RectTransform=>(RectTransform)transform; protected override void Awake() { base.Awake(); bg1 = gameObject.FindChildGameObject("bg1"); bg2 = gameObject.FindChildGameObject("bg2"); bg3 = gameObject.FindChildGameObject("bg3"); } public void Init() { if(CanvasGroup)CanvasGroup.alpha=startAlpha; SetCurrentPosByStartPos(); } public async Task PlayEnterAni(float capsuleShowTime) { RectTransform.DOAnchorPos(endPos, time).SetEase(easeCurve); if(CanvasGroup)CanvasGroup.DOFadeAlpha(1, time); await Awaiters.Seconds(capsuleShowTime); } public void PlayEnterAni2() { Init(); _=PlayEnterAni(0); } public override void SetData(ICapsuleReward rewardData) { _rewardData = rewardData; } public override void ShowUI() { SetRewardItem(_rewardData); SetBackground(_rewardData); } protected override void SetBackground(ICapsuleReward rewardData) { bg1?.SetActive(rewardData.Quality == 1); bg2?.SetActive(rewardData.Quality == 2); bg3?.SetActive(rewardData.Quality == 3); } protected override string GetBackgroundSprite(ICapsuleReward reward) { return string.Empty; } [ContextMenu("SetStartPos")] private void SetStartPos() { startPos = RectTransform.anchoredPosition; } [ContextMenu("SetEndPos")] private void SetEndPos() { endPos = RectTransform.anchoredPosition; } [ContextMenu("SetCurrentPosByStartPos")] private void SetCurrentPosByStartPos() { RectTransform.anchoredPosition = startPos; } [ContextMenu("SetCurrentPosByEndPos")] private void SetCurrentPosByEndPos() { RectTransform.anchoredPosition = endPos; } } }