using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Events; using UnityEngine.UI; namespace UltraCombos.Marvel.DrawHeroes { public class SceneLoader : MonoBehaviour { [Configuration.Config] [Range(0, 300)] public float duration = 0.0f; float duration_stamp; public string scenePath = "MainScene"; bool is_scene_loading = false; ImageFader fader; [System.Serializable] public class CountdownEvent : UnityEvent { } [Space(10)] public CountdownEvent onCountdown = new CountdownEvent(); public UnityEvent onLoadScene = new UnityEvent(); private void Start() { Configuration.GrpcServer.Instance.LoadSettings(); duration_stamp = Time.time; fader = GetComponent(); if (fader == null) fader = gameObject.AddComponent(); } private void Update() { if (duration > 0.0f && is_scene_loading == false) { float elapsed_time = Time.time - duration_stamp; if (elapsed_time > duration) { LoadScene(); } else { onCountdown.Invoke(duration, elapsed_time); } } } public void LoadScene() { if (is_scene_loading) return; is_scene_loading = true; fader.SetActive(true); //onLoadScene.Invoke(); //UnityEngine.SceneManagement.SceneManager.LoadScene(scenePath); StartCoroutine(OnLoadSceneAsync()); } private IEnumerator OnLoadSceneAsync() { onLoadScene.Invoke(); yield return new WaitForSeconds(1.0f); yield return UnityEngine.SceneManagement.SceneManager.LoadSceneAsync(scenePath); } } }