Exemple #1
0
    /// <summary>
    /// Destrói o distrator
    /// </summary>
    public void DestroyDistractor()
    {
        Cursor.SetCursor(null, Vector2.zero, CursorMode.Auto);        //Muda o curso de volta ao normal, pois a função OnPointerExit não funciona quando o objeto é destruído
        numDistractors--;
        if (numDistractors == 0 /*&& LevelController.TimeIsRunning*/) //Verifica o número de distradores na cena para ver se pode desbloquear os botões
        {
            LevelController.bloqueiaBotao = false;
            silabaControl.CompleteEmptyTextSlots();

            // Instancia a seta indicadora quando todos os distratores são destruidos
            SetaIndicadora.SetaSetup();
            //SetaIndicadora.DestroiSeta();
            SetaIndicadora.IndicarPos();
        }
        gameObjectPosition = new Vector3(gameObject.transform.position.x, gameObject.transform.position.y, gameObject.transform.position.z);
        Instantiate(explosion, gameObjectPosition, Quaternion.identity);
        Destroy(gameObject);
    }
Exemple #2
0
    /// <summary>
    /// Escolhe uma silaba aleatoriamente dentro dos arquivos de áudio carregados em "silabasNivelAtual" e a toca
    /// </summary>
    public void TocarSilaba()//escolhe e toca uma sílaba aleatória (random nos arquivos de áudio)
    {
        //randomNumber = Random.Range(0, silabasNivelAtual.Length);
        randomNumber = RandomNotSoRandom();
        LevelController.PalavraSelecionada = silabasNivelAtual[randomNumber].name.ToUpper();//pega a sílaba (nome do arquivo sem a extensão) aleatóriamente
        // Guarda a palavra selecionada para o jogador
        DataManager.statisticsData.palavraSelecionada = LevelController.PalavraSelecionada;

        // Verifica se a PalavraSelecionada deve ser separada em sílabas ou letras
        if (LevelController.eSilaba)
        {
            LevelController.SeparaSilabas();
        }
        else
        {
            LevelController.SeparaLetras();
        }

        IsPlanetLetterSetup();

        silabaAtual = silabasNivelAtual[randomNumber] as AudioClip;
        wordTime    = silabaAtual.length;
        soundManager.PlaySilaba(silabaAtual);
        StartCoroutine(WaitForSound(silabaAtual.length));
        StartCoroutine(timer.SetTimeIsRunning(silabaAtual));

        buttonDicaAudio.ActiveButton();
        buttonDicaVisual.ActiveButton();

        if (stageManager.blockTextSlot)
        {
            BloqueiaEmptyTextSlots();
            StartCoroutine(WaitAndWriteEmptySlots());
        }

        // Se não for o caso de ter distratores, instancia a seta agora (se tiver distratodres, instancia no script Distractor)
        if (!GameObject.Find("Distractor Creator"))
        {
            SetaIndicadora.SetaSetup();
            //SetaIndicadora.DestroiSeta();
            SetaIndicadora.IndicarPos();
        }
    }
Exemple #3
0
    /// <summary>
    /// Se o teclado digita estiver liberado, recebe a letra digitada e concatena com as previamente digitadas (se não atingiu o máximo de letras)
    /// Após concatenar, verifica se pode liberar o botão para confirmar a resposta
    /// </summary>
    public void buttonPressed()
    {
        if (!LevelController.bloqueiaBotao)
        {
            click.Play(0); // toca som de apertando o botao (click_tecla01)

            int i = 0;

            // Encontra em qual silaba está (i = silaba em que está - 1)
            while (i < LevelController.textSlots && LevelController.inputText[i] != null && LevelController.originalText[i].Length <= LevelController.inputText[i].Length)
            {
                i++;
            }

            // Verificar se a silaba em questão está completa (todas as letras) e se pode liberar o botão confirma
            if (i < LevelController.textSlots)
            {
                if (LevelController.inputText[i] == null || LevelController.inputText[i].Length < LevelController.originalText[i].Length)
                {
                    LevelController.inputText[i] = string.Concat(LevelController.inputText[i], currentButton.name);
                }
                if (stageManager.textSlots == i + 1 && LevelController.inputText[i].Length == LevelController.originalText[i].Length)
                {
                    LevelController.BotaoConfirmaResposta = true;
                }
            }

            // Verifica se há mais algum espaço a ser preenchido
            while (i < LevelController.textSlots && LevelController.inputText[i] != null && LevelController.originalText[i].Length <= LevelController.inputText[i].Length)
            {
                i++;
            }
            if (i == LevelController.textSlots)
            {
                LevelController.BotaoConfirmaResposta = true;
            }

            SetaIndicadora.DestroiSeta();
            SetaIndicadora.IndicarPos();
        }
    }
Exemple #4
0
    /// <summary>
    /// Verifica se tem alguma silaba escrita e apaga somente a ultima silaba escrita
    /// </summary>
    public void buttonPressed()
    {
        // Verifica se os botões não estão bloqueados
        if (!LevelController.bloqueiaBotao)
        {
            //click.Play(0);


            // Encontra o máximo de sílabas existentes menos 1 - vetor inicia em 0
            int           i             = LevelController.textSlots - 1;
            SilabaControl silabaControl = SilabaControl.instance;

            // Varre o vetor a partir do final procurando a última sílaba digitada
            while (i > -1)
            {
                // Se o vetor é vazio, não faz nada
                if (LevelController.inputText[i] != null)
                {
                    // Se não for vazio, verifica se existe alguma letra na posição i do vetor
                    if (LevelController.inputText[i].Length > 0)
                    {
                        // Se tem letra, ve se pode apagar
                        if (silabaControl.isPlanetLetter[i])
                        {
                            // Apaga e sai
                            LevelController.inputText[i] = "";//.Remove(LevelController.silabasDigitadas[1].Length - 1);
                            break;
                        }
                    }
                }

                i--;
            }

            // Bloqueia o botão de confirmar resposta, pois todas as sílabas não foram digitadas
            LevelController.BotaoConfirmaResposta = false;
        }
        SetaIndicadora.DestroiSeta();
        SetaIndicadora.IndicarPos();
    }
Exemple #5
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
        }
    }