|
|
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using UnityEngine.UI;
- using TMPro;
- using NaughtyAttributes;
-
- public class IntroController : MonoBehaviour, IResettable
- {
-
- [SerializeField]
- private TMP_Text m_levelText;
-
- [SerializeField]
- private TextMeshProUGUI m_detailsText;
-
- [SerializeField]
- private TextMeshProUGUI m_timerText;
-
- [SerializeField]
- private TextMeshProUGUI m_goText;
-
- [SerializeField]
- private Variables.Reference<bool> m_freezePlayer;
-
- [SerializeField]
- private LevelManager m_manager;
-
- [SerializeField]
- private Image m_backGround;
-
- [SerializeField, BoxGroup("Settings")]
- private float LevelFadeTime = 2;
- [SerializeField, BoxGroup("Settings")]
- private float Details1 = 1;
- [SerializeField, BoxGroup("Settings")]
- private float Details2 = 0.1f;
- [SerializeField, BoxGroup("Settings")]
- private float Details3 = 0.8f;
- [SerializeField, BoxGroup("Settings")]
- private float Fadetime = 1;
- [SerializeField, BoxGroup("Settings")]
- private float gotime = 0.5f;
-
-
- private IEnumerator Start()
- {
- m_backGround.gameObject.SetActive(true);
- m_timerText.gameObject.SetActive(false);
- m_levelText.text = m_manager.levelName;
-
- m_freezePlayer.Value = true;
-
-
- yield return StartCoroutine(LevelName(LevelFadeTime));
- yield return StartCoroutine(DetailText(Details1, Details2, Details3));
- yield return StartCoroutine(Fade(Fadetime));
- yield return StartCoroutine(Go(gotime));
- }
-
-
-
- private IEnumerator LevelName(float time)
- {
- m_levelText.gameObject.SetActive(true);
-
- float start = 0;
- float end = 1;
-
- float elaspedTime = 0;
- Color color = m_levelText.color;
-
- while (elaspedTime < time)
- {
- float alpha = Mathf.Sin(Mathf.PI * (elaspedTime / time));
- color.a = alpha;
- m_levelText.color = color;
-
- yield return new WaitForEndOfFrame();
- elaspedTime += Time.deltaTime;
- }
-
- color.a = 0;
- m_levelText.color = color;
-
- m_levelText.gameObject.SetActive(false);
- }
-
- private IEnumerator DetailText(float time,float time2, float time3)
- {
- m_timerText.gameObject.SetActive(true);
- yield return new WaitForSeconds(time);
-
-
- m_detailsText.gameObject.SetActive(true);
- m_detailsText.text = "\nSeconds\n\n";
- yield return new WaitForSeconds(time);
-
- foreach(char c in m_manager.levelPrompt)
- {
- m_detailsText.text += c;
- yield return new WaitForSeconds(time2);
- }
-
- yield return new WaitForSeconds(time3);
- }
-
- private IEnumerator Fade(float time)
- {
-
- float elaspedTime = 0;
- Color textColor = m_detailsText.color;
- Color backgroundColor = m_backGround.color;
-
-
-
- while (elaspedTime < time)
- {
- textColor.a = 1-(elaspedTime/time);
- backgroundColor.a = 1-(elaspedTime/time);
-
- m_backGround.color = backgroundColor;
- m_detailsText.color = textColor;
-
- yield return new WaitForEndOfFrame();
- elaspedTime+= Time.deltaTime;
-
- }
-
- textColor.a = 0;
- backgroundColor.a = 0;
-
- m_backGround.color = backgroundColor;
- m_detailsText.color = textColor;
-
- m_detailsText.gameObject.SetActive(false);
- m_backGround.gameObject.SetActive(false);
-
-
- }
-
- private IEnumerator Go(float time)
- {
- m_goText.gameObject.SetActive(true);
- yield return new WaitForSeconds(time);
- m_freezePlayer.Value = false;
- m_goText.gameObject.SetActive(false);
- }
-
- public void OnLevelLoad()
- {
-
- }
-
- public IEnumerator OnResetStart(float time)
- {
- yield break;
- }
-
- private IEnumerator ResetRoutine(float time)
- {
- m_goText.gameObject.SetActive(true);
- yield return new WaitForSeconds(time);
- m_goText.gameObject.SetActive(false);
- }
-
- public void OnResetEnd()
- {
- StartCoroutine(ResetRoutine(gotime));
- }
- }
|