using System.Collections; using System.Collections.Generic; using UnityEngine; using TMPro; using UnityEngine.Events; using DG.Tweening; using UnityEngine.UI; //Thomas09 //Text changes are sent from the server. public class WaveText : MonoBehaviour { [SerializeField] private GameObject seperator; [SerializeField] private TMP_Text waveText; [SerializeField] private TMP_Text waveHeading; private string cachedMessage = ""; private UnityEvent OnTextChangedEvent = new UnityEvent(); [SerializeField] private CanvasGroup textGroup; private void Awake() { textGroup.alpha = 0; waveText.text = ""; seperator.SetActive(false); } private void Start() { OnTextChangedEvent.AddListener(OnTextChanged); } private void Update() { if (cachedMessage != waveText.text) { cachedMessage = waveText.text; OnTextChangedEvent?.Invoke(); } } public TMP_Text GetWaveText() => waveText; public TMP_Text GetWaveHeading() => waveHeading; public void ResetWaveText() { textGroup.alpha = 0; seperator.SetActive(false); waveText.text = ""; waveHeading.text = ""; } private void OnTextChanged() { seperator.SetActive(true); textGroup.alpha = 0; transform.localScale = new Vector3(1, 0, 1); DOTween.Sequence() .Append(transform.DOScaleY(1, 0.15f)) .Join(textGroup.DOFade(1.0f, 0.15f).SetEase(Ease.InSine)) .Append(transform.DOShakePosition(0.5f, 15, 40, 90, false, true)) .AppendInterval(3.5f) .Append(transform.DOScaleY(0, 0.15f)) .Join(textGroup.DOFade(0.0f, 0.1f).SetEase(Ease.OutSine)); } }