using Core; using DG.Tweening; using PermanentSystems; using TMPro; using UnityEngine; namespace Components { public class HighScoreField : BaseMonoBehaviour { [SerializeField] private TextMeshPro scoreText; [SerializeField] private ParticleSystem collideEffect; [SerializeField] private ParticleSystem celebrateEffect; private Tween _tween; private bool _isRunning; protected override void ReleaseReferences() { _tween = null; scoreText = null; } public void Initialize() { gameObject.SetActive(false); } public void StartScoreSequence(float inDuration, int inScore) { if (_isRunning) return; _isRunning = true; gameObject.SetActive(true); scoreText.text = $"Previous High Score:\n{inScore}"; _tween = transform.DOLocalMoveZ(.35f, inDuration) .SetEase(Ease.Linear) .OnComplete(() => { _tween = transform.DOLocalMoveZ(-6f, inDuration) .SetEase(Ease.Linear) .OnComplete(() => { gameObject.SetActive(false); _isRunning = false; }); }); } public void PlayCollisionEffect() { collideEffect.Play(); celebrateEffect.Play(); AudioSystem.PlaySoundEffect(AudioList.NewHighScoreEffect); } public void PauseSequence() { if (!_isRunning) return; _tween.Pause(); } public void ResumeSequence() { if (!_isRunning) return; _tween.Play(); } } }