using System; using Core; using DG.Tweening; using LeTai.TrueShadow; using Sirenix.OdinInspector; using TMPro; using UnityEngine; namespace Components { public class ScoreMegaLabel : BaseMonoBehaviour { [SerializeField] private CanvasGroup groupHolder; [SerializeField] private RectTransform background; [SerializeField] private TextMeshProUGUI labelText; [SerializeField] private RectTransform label; [SerializeField] private TrueShadow shineEffect; [SerializeField] private float duration = .2f; [SerializeField] private float backgroundScale = 1.1f; [SerializeField] private float labelScale = 1.1f; [SerializeField] private Ease backgroundEase = Ease.OutBack; [SerializeField] private Ease labelEase = Ease.OutBack; private Tween _backgroundTween; private Tween _shineTween; private Tween _labelTween; private Tween _fadeTween; protected override void ReleaseReferences() { // } public void ShowLabel(string inSentence, Action onShowComplete = null) { _shineTween?.Kill(); _backgroundTween?.Kill(); _labelTween?.Kill(); _fadeTween?.Kill(); // Reset Values _fadeTween = groupHolder.DOFade(0f, 0f); _backgroundTween = background.DOScaleX(0f, 0f); _shineTween = shineEffect.DoFade(0f, 0f); _labelTween = label.DOScale(.3f, 0f); labelText.text = inSentence; // Animation _fadeTween = groupHolder.DOFade(1f, duration); _shineTween = shineEffect.DoFade(1f, duration); _labelTween = label.DOScale(labelScale, duration) .SetEase(labelEase); _backgroundTween = background.DOScaleX(backgroundScale, duration) .SetEase(backgroundEase) .OnComplete(() => { _shineTween = shineEffect.DoFade(0f, duration); _labelTween = label.DOScale(1f, duration); _backgroundTween = background.DOScaleX(1f, duration) .OnComplete(() => onShowComplete?.Invoke()); _fadeTween = groupHolder.DOFade(0f, duration * 3); }); } } }