using System.Collections;
using UnityEngine;
///
/// TransitionManager is a singleton that manages the transitions
/// between levels in the game.
///
public class TransitionManager : MonoBehaviour
{
public static TransitionManager Instance => _instance;
private static TransitionManager _instance;
public int currentLevel;
private Animator _animator;
private void Awake()
{
if (_instance != null && _instance != this)
{
Destroy(gameObject);
return;
}
_instance = this;
DontDestroyOnLoad(gameObject);
_animator = GetComponentInChildren();
}
public void NextLevel()
{
ToLevel(currentLevel + 1);
}
public void ToLevel(int level)
{
currentLevel = level;
var scene = $"Level {level}";
if (Application.CanStreamedLevelBeLoaded(scene))
StartCoroutine(LoadLevel(scene));
else
{
currentLevel = 0;
StartCoroutine(LoadLevel("Menu"));
}
}
private IEnumerator LoadLevel(string levelName)
{
_animator.SetTrigger("Start");
yield return new WaitForSeconds(.5f);
UnityEngine.SceneManagement.SceneManager.LoadScene(levelName);
}
}