using Core; using DG.Tweening; using Sirenix.OdinInspector; using TMPro; using UnityEngine; namespace Components { public class ScoreLabel : BaseMonoBehaviour { [SerializeField] private CanvasGroup groupHolder; [SerializeField] private RectTransform perfectLabel; [SerializeField] private TextMeshProUGUI countText; [SerializeField] private float duration = .75f; [SerializeField] private float scaleSize = 1.2f; [SerializeField] private Ease scaleEase; [SerializeField] private Color glowColor; [SerializeField] private float labelScale = 1.25f; [SerializeField] private Ease labelEase; private Tween _labelTween; private Tween _glowTween; private Tween _counterTween; private Tween _fadeTween; private bool _isHidden; private bool _inAnimation; protected override void ReleaseReferences() { // } public void ShowCounter(int inCount) { if (_isHidden) return; if (_inAnimation) { countText.text = $"x{inCount}"; return; } // Reset Values _glowTween?.Kill(); _labelTween?.Kill(); _counterTween?.Kill(); _fadeTween?.Kill(); _glowTween = countText.DOGlowColor(Color.clear, 0f); _labelTween = perfectLabel.DOScaleX(.7f, 0f); _counterTween = countText.DOScale(1f, 0f); _fadeTween = groupHolder.DOFade(0f, 0f); countText.text = $"x{inCount}"; // Animation _inAnimation = true; _fadeTween = groupHolder.DOFade(1f, duration); _labelTween = perfectLabel.DOScaleX(labelScale, duration) .SetEase(labelEase); _counterTween = countText.DOScale(scaleSize, duration) .SetEase(scaleEase); _glowTween = countText.DOGlowColor(glowColor, duration) .OnComplete(() => { _counterTween = countText.DOScale(1f, duration); _labelTween = perfectLabel.DOScaleX(1f, duration); _glowTween = countText.DOGlowColor(Color.clear, duration); _fadeTween = groupHolder.DOFade(0f, duration); _inAnimation = false; }); } public void HideCounter() { _isHidden = true; _fadeTween?.Kill(); groupHolder.alpha = 0f; // _fadeTween = groupHolder.DOFade(0f, 0f); } public void UnHideCounter() => _isHidden = false; } }