Esempio n. 1
0
    /// <summary>
    /// Verifica se o jogador já está pronto para ir para o próximo nível ou se voltará para o nível anterior
    /// </summary>
    /// <param name="seconds"></param>
    /// <param name="NextLevel"></param>
    /// <param name="PreviousLevel"></param>
    /// <returns></returns>
    public IEnumerator CheckScore(float seconds, string NextLevel, string PreviousLevel)
    {
        GameObject resultado;

        yield return(new WaitForSeconds(seconds + 0.2f));

        stageManager = StageManager.instance; //Pega a atual instância do Stage Manager

        DataManager.SelectProperFile();
        // Salva as estatísticas atuais do jogador
        DataManager.SaveStatistics();
        bool playConclusionVideo = false;

        //Se o resultado estiver correto
        if (getScorePositive() == maxScore)
        {
            if (stageManager.currentPlanet == 4 && !SaveManager.player.CompletouPlaneta(4))
            {
                firstTimeBeatingRev1 = true;
            }

            GiveMoney();
            GiveStars();
            ResetTimePlaying();

            resultado = Resources.Load("Prefabs/Feedback/Level Clear Message") as GameObject;

            resultado = Instantiate(resultado, GameObject.Find("Canvas").transform);

            // Se for o último ato do planeta, libera o próximo planeta.
            if (stageManager.currentAct == 3)
            {
                SaveManager.player.planeta[stageManager.currentPlanet].liberado = true;
            }
            // Caso seja a revisão verifica se é do sistema 0
            if (stageManager.eRevisao)
            {
                // Se for do sistema 0, libera todos os outros
                if (!SaveManager.player.sistemaLiberado)
                {
                    SaveManager.player.sistemaLiberado = true;
                }
                // Se não for o 0, verifica se concluiu todos os sistemas pela primeira vez
                else if (SaveManager.player.CompletouTodosSistemas() && !SaveManager.player.jaConcluiuJogo)
                {
                    SaveManager.player.jaConcluiuJogo = true;
                    playConclusionVideo = true;
                }
            }


            //// Se ganhar uma fase de revisão e for o último ato (caso tenha mais que um), libera o próximo sistema
            //if (stageManager.NextLevel.Contains("stageSelect") && stageManager.eRevisao)
            //{
            //    // Pega o inteiro no final do stageSelect (indica qual sistema está) e libera o proximo sistema (+1)
            //    SaveManager.player.sistemaLiberado[System.Int32.Parse(stageManager.NextLevel.Substring(stageManager.NextLevel.Length - 1)) + 1] = true;
            //}

            SaveManager.Save();
            yield return(new WaitForSeconds(2));

            GameObject feedbackEstrelas;

            if (stars == 1)
            {
                feedbackEstrelas = Resources.Load("Prefabs/Feedback/GanhaUmaEstrela") as GameObject;
                Instantiate(feedbackEstrelas, GameObject.Find("Canvas").transform);
                yield return(new WaitForSeconds(1));
            }
            else if (stars == 2)
            {
                feedbackEstrelas = Resources.Load("Prefabs/Feedback/GanhaDuasEstrela") as GameObject;
                Instantiate(feedbackEstrelas, GameObject.Find("Canvas").transform);
                yield return(new WaitForSeconds(2));
            }
            else if (stars == 3)
            {
                feedbackEstrelas = Resources.Load("Prefabs/Feedback/GanhaTresEstrela") as GameObject;
                Instantiate(feedbackEstrelas, GameObject.Find("Canvas").transform);
                yield return(new WaitForSeconds(2));
            }

            if (playConclusionVideo)
            {
                UnityEngine.Video.VideoClip videoClip = Resources.Load <UnityEngine.Video.VideoClip>(conclusionVideoName);
                GameObject loadScene = new GameObject();
                loadScene.AddComponent <LoadScene>();
                loadScene.GetComponent <LoadScene>().LoadSceneWithFade(videoClip, NextLevel);
            }
            else
            {
                if (firstTimeBeatingRev1)
                {
                    UnityEngine.Video.VideoClip videoClip = Resources.Load(caminhoVideoSystem) as UnityEngine.Video.VideoClip;
                    stageManager.video   = videoClip;
                    firstTimeBeatingRev1 = false;
                    StartCoroutine(stageManager.CallAnotherLevel(3, "06_systemSelect", true));
                }
                else
                {
                    UnityEngine.Video.VideoClip videoClip = Resources.Load <UnityEngine.Video.VideoClip>(conclusionVideoName);
                    StartCoroutine(stageManager.CallAnotherLevel(3, NextLevel, true));//espera o dobro do tempo pois esta funcao é chamada ao mesmo tempo que a da linha de cima
                }
            }
        }

        //Caso o resultado esteja errado
        else if (getScoreNegative() == maxScore)
        {
            resultado = Resources.Load("Prefabs/Feedback/Level Failed Message") as GameObject;
            resultado = Instantiate(resultado, GameObject.Find("Canvas").transform);

            SaveManager.Save();
            yield return(new WaitForSeconds(4));

            StartCoroutine(stageManager.CallAnotherLevel(3, PreviousLevel, false));//espera o dobro do tempo pois esta funcao é chamada ao mesmo tempo que a da linha de cima
        }
        else
        {
            // Limpa os TextSlots para a proxima palavra
            for (int i = 0; i < LevelController.textSlots; i++)
            {
                LevelController.inputText[i] = "";//reset var after confirm button is clicked
            }

            SetaIndicadora.DestroiSeta();

            StartCoroutine(silabaControl.CallSilaba(0));//chama nova sílaba
        }
    }