|
|
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using TMPro;
-
- [RequireComponent(typeof(TextMeshProUGUI))]
- public class RoundsLeft : MonoBehaviour
- {
-
- [SerializeField]
- private GameModeReference reference;
-
-
- [SerializeField]
- private float DisplayTime;
-
- [SerializeField]
- private AnimationCurve AnimationCurve;
-
-
- private ColorGameMode gameMode;
- private TextMeshProUGUI Text;
-
- private void Awake()
- {
- Text = GetComponent<TextMeshProUGUI>();
- gameMode = reference.Value as ColorGameMode;
-
- Text.enabled = false;
- }
-
-
- [ContextMenu("Do Animation")]
- public void StartAnimation()
- {
- UpdateText();
-
-
- Vector3 startPosition = new Vector3(Screen.width * 2, 0, 0);
- Vector3 endPosition = new Vector3(-Screen.width * 2, 0 , 0);
- StartCoroutine(AnimationRoutine(startPosition, endPosition));
- }
-
- private void UpdateText()
- {
- if (gameMode == null) {
- Text.text = "New Round";
- return;
- }
-
- int RoundsLeft = gameMode.MaxRound - gameMode.RoundCount;
- if (RoundsLeft == 1)
- Text.text = "Last Round";
- else
- Text.text = RoundsLeft + " Rounds Left";
- }
-
- public IEnumerator AnimationRoutine(Vector3 startPos, Vector3 endPos)
- {
- RectTransform rt = transform as RectTransform;
- Text.enabled = true;
-
- float ratio;
- float elapsedTime = 0;
- while (elapsedTime < DisplayTime)
- {
- ratio = AnimationCurve.Evaluate(elapsedTime/DisplayTime);
- rt.anchoredPosition = Vector3.Lerp(startPos, endPos, ratio);
-
- yield return new WaitForEndOfFrame();
- elapsedTime += Time.deltaTime;
- }
-
- ratio = AnimationCurve.Evaluate(1);
- rt.anchoredPosition = Vector3.Lerp(startPos, endPos, ratio);
-
- Text.enabled = false;
- }
-
-
- }
|