void PersonagemDerrotado()
    {
        ControladorGlobal.c.EmJogo.Pontuacao = ControladorDeJogo.c.G_Pontos.PontosTotais;
        ControladorGlobal.c.EmJogo.Nivel     = Dados.NivelParaMostrador;
        estado = EstadoDePersonagem.morto;
        ap.Mov.AnimaDerrotado();


        if (ControladorDeJogo.c.VidaExtra)
        {
            InserirVidaExtra(MensagemVidaExtra.tipoDeVidaExtra.anel);
            ControladorDeJogo.c.VidaExtra = false;
        }
        else
        if (ControladorGlobal.c.DadosGlobais.PerfilAtualSelecionado
            .PersonagemAtualSelecionado.Bonus == BonusDePersonagem.vidaExtra
            &&
            !reviveu
            )
        {
            InserirVidaExtra(MensagemVidaExtra.tipoDeVidaExtra.bonusPersonagem);
            reviveu = true;
        }
        else
        {
            Instantiate(ControladorDeJogo.c.RetornaElemento(Elementos.CanvasDerrotado));
        }
    }
Esempio n. 2
0
    public bool EmEstadoDeAcao(bool chao = false)
    {
        bool foi = false;
        EstadoDePersonagem estadoP = Manager.Estado;

        CreatureManager.CreatureState estadoC = manager.CriatureAtivo.Estado;


        if (estadoP == EstadoDePersonagem.comMeuCriature && !chao)
        {
            chao = Manager.CriatureAtivo.Mov.NoChao(Manager.CriatureAtivo.MeuCriatureBase.CaracCriature.distanciaFundamentadora);
        }
        else if (estadoP == EstadoDePersonagem.aPasseio && !chao)
        {
            chao = Manager.Mov.NoChao(0.01f);
        }

        if (estadoP == EstadoDePersonagem.comMeuCriature &&
            chao &&
            (estadoC == CreatureManager.CreatureState.emLuta ||
             estadoC == CreatureManager.CreatureState.aPasseio)
            )
        {
            foi = true;
        }
        else if (estadoP == EstadoDePersonagem.aPasseio && chao)
        {
            foi = true;
        }

        return(foi);
    }
    void Update()
    {
        switch (estado)
        {
        case EstadoDePersonagem.Controlavel:
            dados.RegeneracaoDeEstamina();
            if (!ControladorDeJogo.c.Pause)
            {
                ap.Update();
            }
            break;

        case EstadoDePersonagem.emDano:
            ap.Mov.PararMovimento();
            if (!estadoDeDano.Update())
            {
                estado = EstadoDePersonagem.Controlavel;
            }
            break;

        case EstadoDePersonagem.morto:
            //morto
            break;
        }
    }
Esempio n. 4
0
 public void AoCriature(CreatureManager inimigo = null)
 {
     estado        = EstadoDePersonagem.comMeuCriature;
     criatureAtivo = GameObject.Find("CriatureAtivo").GetComponent <CreatureManager>();
     ////GameController.g.HudM.Btns.BotoesDoCriature(this);
     MbAlternancia.AoCriature(criatureAtivo, inimigo);
 }
    private void OnRequestDownArrowMagic(IGameEvent e)
    {
        StandardSendGameEvent ssge = (StandardSendGameEvent)e;

        Dados.ConsomeMana((int)ssge.MyObject[0]);
        estado = EstadoDePersonagem.downArrowActive;
        magic.InstanciarDownArrow();
        piscaI.Start(5);
        EventAgregator.Publish(new StandardSendGameEvent(gameObject, EventKey.changeMagicPoints, Dados.PontosDeMana, Dados.MaxMana));
    }
    private void OnRequestPosition(IGameEvent e)
    {
        StandardSendGameEvent ssge = (StandardSendGameEvent)e;

        estado = EstadoDePersonagem.movimentoRequerido;

        positionRequest.RequererMovimento(ssge.Sender, (Vector3)ssge.MyObject[0], 4);

        atk.ResetaAttackManager();
        magic.RetornarAoModoDeEspera();
        dash.RetornarAoEstadoDeEspera();
    }
    private void OnCureInvoke(IGameEvent obj)
    {
        if (dados.PontosDeVida > 0)
        {
            StandardSendGameEvent ssge = (StandardSendGameEvent)obj;
            Dados.ConsomeMana((int)ssge.MyObject[0]);
            Dados.AdicionarVida((int)ssge.MyObject[1]);

            estado = EstadoDePersonagem.aPasseio;

            EventAgregator.Publish(new StandardSendGameEvent(gameObject, EventKey.changeLifePoints, Dados.PontosDeVida, Dados.MaxVida));
            EventAgregator.Publish(new StandardSendGameEvent(gameObject, EventKey.changeMagicPoints, Dados.PontosDeMana, Dados.MaxMana));
        }
    }
Esempio n. 8
0
    public void IniciarMenuDePause()
    {
        if (GameController.g.Manager.Estado != EstadoDePersonagem.derrotado)
        {
            Time.timeScale = 0;
            estadoAoPausar = GameController.g.Manager.Estado;
            EventAgregator.Publish(new StandardSendGameEvent(EventKey.enterPause));
            EventAgregator.Publish(new StandardSendGameEvent(EventKey.requestHideControllers));
            containerDoMenuDePause.SetActive(true);
            IniciarQualMenu(qualMenu);

            EventAgregator.AddListener(EventKey.returnToMainMenu, OnReturnToMainMenu);
            EventAgregator.AddListener(EventKey.triedToChangeEmblemNoSuccessfull, OnTriedEmblem);
            EventAgregator.AddListener(EventKey.requestReturnToEmblemMenu, OnRequestEmblemMenu);
        }
    }
    private void OnHeroDamage(IGameEvent obj)
    {
        StandardSendGameEvent ssge = (StandardSendGameEvent)obj;

        if ((!piscaI.Invuneravel || ssge.MyObject.Length > 2) && Dados.PontosDeVida > 0)
        {
            Dados.AplicaDano((int)ssge.MyObject[1]);
            EventAgregator.Publish(new StandardSendGameEvent(gameObject, EventKey.changeLifePoints, Dados.PontosDeVida, Dados.MaxVida));
            EventAgregator.Publish(new StandardSendGameEvent(EventKey.requestShakeCam, ShakeAxis.y, 3, 1f));

            RetornarComponentesAoPAdrao();
            emDano.Start(transform.position, new Vector3((bool)ssge.MyObject[0] ? -1 : 1, 1, 0));

            if (dados.PontosDeVida > 0)
            {
                if (GameController.g.MyKeys.VerificaAutoShift("equiped_" + NomesEmblemas.suspiroLongo))
                {
                    piscaI.Start(2);
                }
                else
                {
                    piscaI.Start(1);
                }

                estado = EstadoDePersonagem.emDano;
                EventAgregator.Publish(new StandardSendGameEvent(EventKey.disparaSom, somDoDano));

                if (ssge.MyObject.Length > 2)
                {
                    tDamage.agendado = true;
                    tDamage.pos      = (Vector3)ssge.MyObject[2];
                }
            }
            else
            {
                InvokeDerrota(ssge.Sender.transform.position);
            }

            Destroy(
                Instantiate(heroParticleDamage, transform.position, Quaternion.identity), 5);
        }
        else if (dados.PontosDeVida <= 0 && estado != EstadoDePersonagem.derrotado)
        {
            InvokeDerrota(ssge.Sender.transform.position);
        }
    }
    void InvokeDerrota(Vector3 pos)
    {
        EventAgregator.Publish(EventKey.requestHideControllers, null);
        EventAgregator.Publish(new StandardSendGameEvent(EventKey.requestShakeCam, ShakeAxis.x, 20, 1f));
        EventAgregator.Publish(new StandardSendGameEvent(EventKey.disparaSom, somDoDanoFatal));

        string nomeCena = UnityEngine.SceneManagement.SceneManager.GetActiveScene().name;

        Debug.Log("cena onde dinehiro caiu: " + nomeCena);
        dados.DinheiroCaido = new DinheiroCaido()
        {
            valor        = dados.Dinheiro,
            Pos          = pos,
            estaCaido    = true,
            cenaOndeCaiu = StringParaEnum.ObterEnum <NomesCenas>(nomeCena)
        };

        dados.Dinheiro = 0;
        particulaDoDanoMortal.SetActive(true);

        estado = EstadoDePersonagem.derrotado;
    }
    public void BotaoAtacar()
    {
        if (estado == EstadoDePersonagem.aPasseio && atk.IniciarAtaqueSePodeAtacar())
        {
            if (CommandReader.VetorDirecao(Control).z > 0.5f)
            {
                atk.DisparaAtaquePraCima();
                if (mov.NoChao)
                {
                    animador.AnimaAtaqueAlto();
                }
                else
                {
                    animador.AnimaAtaqueAltoForaDoChao();
                }
            }
            else if (CommandReader.VetorDirecao(Control).z < -0.25f && !mov.NoChao)
            {
                atk.DisparaAtaquePuloPraBaixo();
                animador.AnimaAtaqueBaixo();
            }
            else
            {
                atk.DisparaAtaqueComum();

                if (mov.NoChao)
                {
                    animador.AnimaAtaqueNormal(Mathf.Abs(mov.Velocity.x));
                }
                else
                {
                    animador.AnimaAtaqueNormalForaDoChao();
                }
            }

            estado = EstadoDePersonagem.emAtk;
        }
    }
Esempio n. 12
0
    public bool EmEstadoDeAcao(bool chao = false)
    {
        bool foi = false;
        EstadoDePersonagem estadoP = Manager.Estado;

        if (estadoP == EstadoDePersonagem.aPasseio && !chao)
        {
            chao = Manager.Mov.NoChao(0.1f);
        }

        if (GameController.g.myKeys.VerificaAutoShift(KeyShift.estouNoTuto))
        {
            CreatureManager.CreatureState estadoC = manager.CriatureAtivo.Estado;

            if (estadoP == EstadoDePersonagem.comMeuCriature && !chao)
            {
                chao = Manager.CriatureAtivo.Mov.NoChao(Manager.CriatureAtivo.MeuCriatureBase.CaracCriature.distanciaFundamentadora);
            }

            if (estadoP == EstadoDePersonagem.comMeuCriature &&
                chao &&
                (estadoC == CreatureManager.CreatureState.emLuta ||
                 estadoC == CreatureManager.CreatureState.aPasseio)
                )
            {
                foi = true;
            }
        }

        if (estadoP == EstadoDePersonagem.aPasseio && chao)
        {
            foi = true;
        }

        return(foi);
    }
    public void AplicarDano(int dano, float tempoDeDano = 0.5f)
    {
        if (estado != EstadoDePersonagem.morto)
        {
            dados.AplicarDano(dano);
            audioX.clip = ControladorDeJogo.c.Sons[0];
            audioX.Play();
            if (ControladorGlobal.c.DadosGlobais.PerfilAtualSelecionado
                .PersonagemAtualSelecionado.Bonus != BonusDePersonagem.naoPerdeCheckCombo)
            {
                ControladorDeJogo.c.G_Combos.ZerarCombo();
            }

            ap.Mov.AnimaTomeiDano();
            estadoDeDano.DisparaDano(tempoDeDano);
            estado = EstadoDePersonagem.emDano;
            aDI.AfastaInimigoDeDano(transform);

            if (dados.VidaCorrente <= 0)
            {
                PersonagemDerrotado();
            }
        }
    }
 public void Revivi()
 {
     dados.VidaCorrente = dados.VidaMax;
     estado             = EstadoDePersonagem.Controlavel;
 }
    private void OnExitPause(IGameEvent obj)
    {
        StandardSendGameEvent ssge = (StandardSendGameEvent)obj;

        estado = (EstadoDePersonagem)ssge.MyObject[0];
    }
 private void OnCheckPointLoad(IGameEvent e)
 {
     particulaDoDescanso.SetActive(true);
     estado = EstadoDePersonagem.inCheckPoint;
 }
Esempio n. 17
0
 public void AoHeroi()
 {
     MbAlternancia.AoHeroi(this /*,retornaCamera*/);
     // //GameController.g.HudM.Btns.BotoesDoHeroi(this);
     estado = EstadoDePersonagem.aPasseio;
 }
 private void OnCancelCure(IGameEvent obj)
 {
     estado = EstadoDePersonagem.aPasseio;
 }
 private void OnOpenExternalPanel(IGameEvent e)
 {
     RetornarComponentesAoPAdrao();
     mov.AplicadorDeMovimentos(Vector3.zero);
     estado = EstadoDePersonagem.parado;
 }
    // Update is called once per frame
    void Update()
    {
        piscaI.Update();
        atk.AttackIntervalUpdate();

        if (Control != Controlador.nulo)
        {
            switch (estado)
            {
            case EstadoDePersonagem.aPasseio:
                #region aPasseio

                bool    noChao = mov.NoChao;
                Vector3 V      = CommandReader.VetorDirecao(Control);
                mov.AplicadorDeMovimentos(V, CommandReader.ButtonDown(1, Control), dados.TemDoubleJump);

                if (V.z <= 0.75f)
                {
                    animador.EfetuarAnimacao(Mathf.Abs(mov.Velocity.x), !noChao);
                }

                atk.UpdateAttack();

                if (CommandReader.ButtonDown(0, Control))
                {
                    BotaoAtacar();
                }

                magic.Update(Control, Dados.PontosDeMana, noChao, dados);

                if (magic.EmTempoDeRecarga && magic.CustoParaRecarga <= Dados.PontosDeMana)
                {
                    estado = EstadoDePersonagem.emCura;
                    mov.AplicadorDeMovimentos(Vector3.zero, false, false);
                }

                if (dados.TemDash && dash.PodeDarDash(noChao) && CommandReader.ButtonDown(3, Control))
                {
                    dash.Start(Mathf.Sign(transform.localScale.x), noChao);
                    estado = EstadoDePersonagem.inDash;
                }

                if (CommandReader.ButtonDown(4, Control))
                {
                    atk.ModificouCorDaEspada(-1, dados);
                }
                else if (CommandReader.ButtonDown(5, Control))
                {
                    atk.ModificouCorDaEspada(1, dados);
                }

                if (V.z > 0.75f && noChao)
                {
                    mov.AplicadorDeMovimentos(Vector3.zero, false, false);
                    animador.EfetuarAnimacao(0, !noChao);
                    ActionManager.VerificaAcao();
                }
                #endregion
                break;

            case EstadoDePersonagem.emCura:
                magic.Update(Control, Dados.PontosDeMana, mov.NoChao, dados);
                break;

            case EstadoDePersonagem.emAtk:
                #region emAtk
                if (!mov.NoChao)
                {
                    mov.AplicadorDeMovimentos(CommandReader.VetorDirecao(Control), CommandReader.ButtonDown(1, Control), dados.TemDoubleJump);
                }
                else
                {
                    mov.AplicadorDeMovimentos(Vector3.Lerp(mov.Velocity.normalized, Vector3.zero, 30 * Time.deltaTime));
                }

                if (atk.UpdateAttack())
                {
                    estado = EstadoDePersonagem.aPasseio;
                }
                #endregion
                break;

            case EstadoDePersonagem.emDano:
                #region emDano
                if (emDano.Update(mov, CommandReader.VetorDirecao(Control)))
                {
                    if (tDamage.agendado)
                    {
                        mov.AplicadorDeMovimentos(Vector3.zero);
                        estado = EstadoDePersonagem.parado;
                        tDamage.Iniciar();
                    }
                    else
                    {
                        estado = EstadoDePersonagem.aPasseio;
                    }
                }
                #endregion
                break;

            case EstadoDePersonagem.downArrowActive:
                #region downArrowActive
                if (!mov.NoChao)
                {
                    piscaI.Start(0.5f, 4);
                    mov.GravityScaled(250);
                }
                else
                {
                    mov.AplicadorDeMovimentos(Vector3.zero, false, false);
                    if (magic.FinalizaDownArrow(mov.NoChao))
                    {
                        estado = EstadoDePersonagem.aPasseio;
                    }
                }
                #endregion
                break;

            case EstadoDePersonagem.inDash:
                #region inDash
                if (dash.Update(Mathf.Sign(transform.localScale.x), Mathf.Sign(CommandReader.VetorDirecao(Control).x)))
                {
                    estado = EstadoDePersonagem.aPasseio;
                }

                if (CommandReader.ButtonDown(0, Control))
                {
                    dash.RetornarAoEstadoDeEspera();
                    estado = EstadoDePersonagem.aPasseio;
                    BotaoAtacar();
                }
                #endregion
                break;

            case EstadoDePersonagem.inCheckPoint:
                #region inCheckPoint

                if (Mathf.Abs(CommandReader.VetorDirecao(GlobalController.g.Control).x) > 0.5f)
                {
                    particulaSaiuDoDescanso.gameObject.SetActive(true);
                    particulaSaiuDoDescanso.Play();
                    particulaDoDescanso.SetActive(false);
                    estado = EstadoDePersonagem.aPasseio;
                    EventAgregator.Publish(EventKey.checkPointExit, null);
                }
                #endregion
                break;

            case EstadoDePersonagem.derrotado:
                #region derrotado
                if (emDano.Update(mov, CommandReader.VetorDirecao(Control)))
                {
                    mov.AplicadorDeMovimentos(Vector3.zero, false, false);
                    particulaDoMorrendo.SetActive(true);
                    if (derrota.Update())
                    {
                        transform.position = dados.ultimoCheckPoint.Pos;
                        dados.SetarVidaMax();
                        //dados.SetarManaMax();

                        GameController.g.MyKeys.ReviverInimigos();

                        SaveDatesManager.SalvarAtualizandoDados(dados.ultimoCheckPoint.nomesDasCenas);
                        SceneLoader.IniciarCarregamento(SaveDatesManager.s.IndiceDoJogoAtualSelecionado,
                                                        () => {
                            estado = EstadoDePersonagem.aPasseio;
                            EventAgregator.Publish(EventKey.requestShowControllers, null);
                            derrota.DesligarLosangulo();
                        });
                        estado = EstadoDePersonagem.naoIniciado;
                    }
                }
                #endregion
                break;

            case EstadoDePersonagem.movimentoRequerido:
                if (positionRequest.UpdateMove())
                {
                    mov.AplicadorDeMovimentos(Vector3.zero);
                    estado = EstadoDePersonagem.parado;
                    EventAgregator.Publish(new StandardGameEvent(positionRequest.Requisitor, EventKey.positionRequeredOk));
                }
                break;
            }
        }
    }
 private void OnCloseExternalPanel(IGameEvent e)
 {
     estado = EstadoDePersonagem.aPasseio;
 }