private IEnumerator InitScene()
        {
            _score = 0;
            _treasuresCollected = 0;
            _time      = 180;       // Session.Instance.GetLevelMetadata().TotalTime;
            _levelId   = Session.Instance.GetLevelId();
            _sceneName = Session.Instance.GetLevelMetadata().SceneName;
            _levelName = Session.Instance.GetLevelMetadata().LevelName;
            InputWrapper.Instance.EnableInput(false);

            HideAllThePanels();
            Transition.gameObject.SetActive(true);
            Transition.DisplayIntro(true);
            Transition.DisplayGameOver(false);
            Transition.SetIntro(_levelId, _levelName, _lives);

            LevelHandlerUtils.DestroyLevel();
            yield return(StartCoroutine(LevelHandlerUtils.LoadLevel(_sceneName)));

            Debug.Log(_sceneName);
            yield return(new WaitForSeconds(1.5f));

            HideAllThePanels();
            GameInfo.gameObject.SetActive(true);
            VirtualInput.gameObject.SetActive(true);
            UpdateGameInfoUI();
            InputWrapper.Instance.EnableInput(true);
            _gameState = GameState.Playing;
        }
 private void GameOver()
 {
     Time.timeScale = 0;
     HideAllThePanels();
     Transition.gameObject.SetActive(true);
     Transition.DisplayIntro(false);
     Transition.DisplayGameOver(true);
     LevelHandlerUtils.DestroyLevel();
 }
 private void RestartLevel()
 {
     Debug.Log("RestartLevel called!");
     _gameState = GameState.Lose;
     _lives--;
     if (_lives <= 0)
     {
         GameOver();
     }
     else
     {
         HideAllThePanels();
         Transition.gameObject.SetActive(true);
         Transition.DisplayIntro(true);
         Transition.DisplayGameOver(false);
         Transition.SetIntro(_levelId, _levelName, _lives);
         LevelHandlerUtils.DestroyLevel();
         StartCoroutine(InitScene());
     }
 }