Example #1
0
        // Update is called once per frame
        public override void Update()
        {
            switch (estado)
            {
            case EstadoDaqui.tempoCorrente:

                if (PodeContarTempo())
                {
                    tempoAcumulado += Time.deltaTime;
                }

                if (tempoAcumulado >= Dados.TempoSignificativo && OAfetado.CaracCriature.meusAtributos.PV.Corrente > 0)
                {
                    Debug.Log(CDoAfetado);
                    if (CDoAfetado != null)
                    {
                        Animator A = CDoAfetado.GetComponent <Animator>();

                        Dano.EmEstadoDeDano(A, CDoAfetado);
                        Dano.InsereEstouEmDano(CDoAfetado, A, new GolpeBase(new ContainerDeCaracteristicasDeGolpe()
                        {
                        }));
                        Dano.AplicaVisaoDeDano(CDoAfetado, (int)Dados.Quantificador);

                        if (CDoAfetado.name == "CriatureAtivo")
                        {
                            GameController.g.HudM.Painel.AtivarNovaMens(
                                string.Format(BancoDeTextos.RetornaListaDeTextoDoIdioma(ChaveDeTexto.status)[1],
                                              OAfetado.NomeEmLinguas, (int)Dados.Quantificador), 20, 2
                                );
                        }
                        else
                        {
                            GameController.g.HudM.Painel.AtivarNovaMens(
                                string.Format(BancoDeTextos.RetornaListaDeTextoDoIdioma(ChaveDeTexto.status)[2],
                                              (int)Dados.Quantificador), 20, 2
                                );
                        }
                    }
                    else
                    {
                        GameController.g.HudM.Painel.AtivarNovaMens(
                            string.Format(BancoDeTextos.RetornaListaDeTextoDoIdioma(ChaveDeTexto.status)[1],
                                          OAfetado.NomeEmLinguas, (int)Dados.Quantificador), 20, 2
                            );
                    }

                    Dano.AplicaCalculoDoDano(OAfetado.CaracCriature.meusAtributos, (int)Dados.Quantificador);


                    GameController.g.HudM.AtualizaDadosDaHudVida(false);

                    if (GameController.g.InimigoAtivo != null)
                    {
                        GameController.g.HudM.AtualizaDadosDaHudVida(true);
                    }



                    VerificaVida();
                    tempoAcumulado = 0;
                }
                else if (OAfetado.CaracCriature.meusAtributos.PV.Corrente <= 0)
                {
                    RetiraComponenteStatus();

                    if (CDoAfetado != null)
                    {
                        MudaParaEstadoMorto();
                    }
                }
                break;

            case EstadoDaqui.derrotadoAtivo:
                tempoAcumulado += Time.deltaTime;
                if (tempoAcumulado > 2 || GameController.g.CommandR.DisparaAcao())
                {
                    apresentaDerrota = new ApresentaDerrota(GameController.g.Manager, CDoAfetado);
                    estado           = EstadoDaqui.morreuEnvenenadoAtivo;
                }

                break;

            case EstadoDaqui.morreuEnvenenadoAtivo:
                ApresentaDerrota.RetornoDaDerrota R = apresentaDerrota.Update();
                if (R != ApresentaDerrota.RetornoDaDerrota.atualizando)
                {
                    if (R == ApresentaDerrota.RetornoDaDerrota.voltarParaPasseio)
                    {
                        GameController.g.Manager.AoHeroi();
                        RetiraComponenteStatus();
                        estado = EstadoDaqui.emEspera;
                    }
                    else
                    if (R == ApresentaDerrota.RetornoDaDerrota.deVoltaAoArmagedom)
                    {
                    }
                }

                break;
            }
        }
    public bool Update()
    {
        bool retorno = false;

        switch (estado)
        {
        case EncounterState.truqueDeCamera:
            TruqueDeCamera();
            break;

        case EncounterState.apresentaAdversario:
            contadorDeTempo += Time.deltaTime;
            if (apresentaAdv.Apresenta(contadorDeTempo, cam))
            {
                depoisDeTerminarAApresentacao();
            }
            break;

        case EncounterState.comecaLuta:
            GameController.g.HudM.InicializaHudDeLuta(inimigo.MeuCriatureBase);
            ((IA_Agressiva)inimigo.IA).PodeAtualizar = true;
            manager.CriatureAtivo.Estado             = CreatureManager.CreatureState.emLuta;
            cam.InicializaCameraDeLuta(manager.CriatureAtivo, inimigo.transform);
            estado = EncounterState.verifiqueVida;
            break;

        case EncounterState.verifiqueVida:
            GameController.g.HudM.AtualizeHud(manager, inimigo.MeuCriatureBase);
            VerifiqueVida();
            break;

        case EncounterState.vitoriaNaLuta:
            if (!apresentaFim.EstouApresentando())
            {
                RecebePontosDaVitoria();
            }
            break;

        case EncounterState.VoltarParaPasseio:

            if (inimigo)
            {
                MonoBehaviour.Destroy(inimigo.gameObject);
            }

            cam.FocarBasica(manager.transform, 10, 10);
            estado  = EncounterState.emEspera;
            retorno = true;
            break;

        case EncounterState.morreuEmLuta:
            ApresentaDerrota.RetornoDaDerrota R = apresentaDerrota.Update();
            if (R != ApresentaDerrota.RetornoDaDerrota.atualizando)
            {
                if (R == ApresentaDerrota.RetornoDaDerrota.voltarParaPasseio)
                {
                    estado = EncounterState.verifiqueVida;
                }
                else
                if (R == ApresentaDerrota.RetornoDaDerrota.deVoltaAoArmagedom)
                {
                    estado = EncounterState.emEspera;
                }
            }
            break;

        case EncounterState.passouDeNivel:
            if (passou.Update())
            {
                estado = EncounterState.VoltarParaPasseio;
            }
            break;
        }
        return(retorno);
    }