Global Game Jam 2021
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

91 lines
1.8 KiB

using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using TMPro;
using Variables;
public class StartScreenUI : MonoBehaviour
{
[SerializeField]
private Reference<float> m_StartTime;
[SerializeField]
private TextMeshProUGUI m_countdownText;
[SerializeField]
private AnimationCurve m_lerpCurve;
[SerializeField]
private Transform m_startPosition;
[SerializeField]
private Transform m_endPosition;
[SerializeField]
private List<NumberAlias> m_aliases;
private void OnEnable()
{
m_StartTime.OnValueChanged += UpdateCountDown;
}
private void OnDisable()
{
m_StartTime.OnValueChanged -= UpdateCountDown;
}
private void UpdateCountDown(float value)
{
int number = Mathf.FloorToInt(value);
if (m_aliases.Any(p => p.Number == number))
{
m_countdownText.text = m_aliases.First(p => p.Number == number).Name;
}
else
{
m_countdownText.text = number.ToString();
}
float ratio = m_lerpCurve.Evaluate(Mathf.Repeat(value,1));
m_countdownText.transform.position = Vector3.Lerp(m_endPosition.position, m_startPosition.position, ratio);
}
[ContextMenu("Do Count Down")]
private void CountDown()
{
StartCoroutine(CountToZero(m_StartTime));
}
private IEnumerator CountToZero(float start)
{
m_StartTime.Value = start;
while (m_StartTime > 0)
{
m_StartTime.Value -= Time.deltaTime;
yield return new WaitForEndOfFrame();
}
}
[System.Serializable]
public struct NumberAlias
{
public int Number;
public string Name;
}
}