using System; using System.Collections; using UnityEngine; using UnityEngine.SceneManagement; using UnityEngine.Video; public class GameManager : MonoBehaviour { #region Singleton public static GameManager singleton; private void Awake() { if (singleton == null) { singleton = this; } else if (singleton != this) { Destroy(gameObject); } } #endregion public bool skipIntro = false; public VideoAsset introClip; public VideoAsset fullMovie; public VideoAsset endingClip; public bool IsPlayingIntro { get; private set; } public FloatingLabel floatingLabelPrefab; public bool CanPlay => CanvasManager.singleton.CanPlay && !(IsPlayingIntro || CameraManager.singleton.isPlayingVideo); public SoundManager soundManager; public bool AllUnlocked { get; set; } public VideoDownloader VideoDownloader { get; private set; } public GameObject endingItem; public int endingThreshold = 7; public SchoolManager mainScene; void Start() { soundManager = GetComponent(); VideoDownloader = GetComponent(); #if !UNITY_EDITOR skipIntro = false; #endif } // Called by UI Button public void OnPressPlay() { if (skipIntro) { StartCoroutine(StartGame()); } else { Intro(); } } private IEnumerator StartGame() { CanvasManager.singleton.StartGame(); CameraManager.singleton.ShowDefaultTexture(); IsPlayingIntro = false; if (!AllUnlocked) CameraManager.singleton.UpdateArrows(); if (!skipIntro) { CameraManager.singleton.MoveRight(); yield return new WaitForSeconds(1f); CameraManager.singleton.UpdateArrows(); } } private void Intro() { Fader.Fade(() => { CanvasManager.singleton.titleScreen.SetActive(false); CameraManager.singleton.PlayVideo(introClip, () => { StartCoroutine(StartGame()); }); }, null, false); } public void PlayFullMovie() { CanvasManager.singleton.Warning("Le Film Dure 21 minutes Continuer ?", () => { CameraManager.singleton.PlayVideo(fullMovie, () => { CameraManager.singleton.MoveToMainScene(); }); }); } public void RestartGameWithWarning() { CanvasManager.singleton.Warning("êtes vous sûr de quitter ?", RestartGame); } public void RestartGame() { VideoPlayManager.Reset(); SceneManager.LoadScene(SceneManager.GetActiveScene().name); } public void UnlockAll() { if (AllUnlocked) return; AllUnlocked = true; CameraManager.singleton.UnlockAll(); } public void OnEndVideo() { if (VideoPlayManager.TotalVideoPlays >= endingThreshold) { if (CameraManager.singleton.CurrentSubScene == null) { CameraManager.singleton.GoToEnding(); } } } public void PlayEndVideo() { CanvasManager.singleton.Warning("Terminer la révolution ?", () => { CameraManager.singleton.ToggleEnding(); CameraManager.singleton.PlayVideo(endingClip, () => { RestartGame(); }); }); } public void PlayCredits() { CameraManager.singleton.PlayVideo(endingClip, () => { RestartGame(); }, 2 * 60); // Credits start at 2 minutes of endingClip } void Update() { if (Input.GetKeyDown(KeyCode.Q)) { Application.Quit(); } else if (Input.GetKeyDown(KeyCode.R)) { RestartGame(); } else if (Input.GetKeyDown(KeyCode.U)) { UnlockAll(); } else if (Input.GetKeyDown(KeyCode.E)) { PlayEndVideo(); } } }