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)); } }
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; } }
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)); } }
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; } }
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; }
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; }