using System; using Core; using DG.Tweening; using UnityEngine; namespace Components { public class CollectionIcon : BaseMonoBehaviour { public event Action OnComplete; [SerializeField] private RectTransform rectTransform; [SerializeField] private float scaleFactor = 1.2f; [SerializeField] private Ease scaleEase = Ease.OutElastic; [SerializeField] private float animationLength = .65f; [SerializeField] private Ease movementEase = Ease.InQuad; private Vector2 _endPosition; private readonly Vector2 _anchorResetPoint = Vector2.one * .5f; protected override void ReleaseReferences() { rectTransform = null; } public void BindData(Vector2 startPosition, Vector2 finalPosition) { rectTransform.SetSiblingIndex(0); rectTransform.anchorMin = startPosition; rectTransform.anchorMax = startPosition; _endPosition = finalPosition; } public void PlayAnimation() { rectTransform.DOScale(Vector3.one * scaleFactor, animationLength) .SetEase(scaleEase); rectTransform.DOMove(_endPosition, animationLength) .SetEase(movementEase) .OnComplete(() => { OnComplete?.Invoke(transform); OnComplete = null; rectTransform.localScale = Vector3.one; rectTransform.anchorMin = _anchorResetPoint; rectTransform.anchorMax = _anchorResetPoint; }); } } }