public void PrepararCombateContraPokemonSalvaje(EventoIniciarCombatePokemonSalvaje pokemon) { GenerarEquipoPokemonDelJugador(); GenerarPokemonSalvaje(pokemon); TipoCombate = TipoDeCombate.PokemonSalvaje; }
private IEnumerator CombateCorrutina(TipoDeCombate tipoCombate) { ControladorDatos.Instancia.ReproducirMusicaCombate(); DatosCombate.CombateActivo = true; //********************* // TEXTO INICIAL DEL ENTRENADOR ANTES DEL COMBATE //********************* if (tipoCombate == TipoDeCombate.Entrenador) { yield return(StartCoroutine(UIControlador.Instancia.Dialogo.componentePrincipal.MostrarTextoCorrutina(entrenador.Conversacion.texto, false, false, Ajustes.Instancia.tiempoDeEsperaUltimaVentanaDialogoEnCombateSiNoSeLeeElTeclado))); } //********************* // TRANSICION A OSCURO //********************* yield return(StartCoroutine(CorrutinasComunes.AlfaDeCeroAUno(pantallaDeCarga))); //********************* // ESTABLECE VALORES POR DEFECTO //********************* //Rotamos la cámara para evitar problemas con otros sprites Camera.main.transform.rotation = Quaternion.Euler(Camera.main.transform.rotation.eulerAngles.x, Camera.main.transform.rotation.eulerAngles.y + 180, Camera.main.transform.rotation.eulerAngles.z); panelBarraSaludPokemonJugador.SetActive(false); panelBarraSaludPokemonEnemigo.SetActive(false); menuEleccionesCombate.SetActive(false); UIControlador.Instancia.Dialogo.ventanaDialogo.SetActive(false); UIControlador.Instancia.Dialogo.campoDeTexto.text = string.Empty; panelPrincipalUICombate.SetActive(true); //********************* // PREPARAR EQUIPOS DE POKEMON LUCHADORES //********************* DatosCombate = new DatosCombate(); if (tipoCombate == TipoDeCombate.PokemonSalvaje) { DatosCombate.PrepararCombateContraPokemonSalvaje(pokemonSalvaje); } else { DatosCombate.PrepararCombateContraEntrenador(entrenador); } //********************* // ASIGNA LOS SPRITES RENDERER Y RELLENA LAS BARRAS DE VIDA //********************* spritesCombate.gameObject.SetActive(true); yield return(new WaitForSeconds(0.05f)); RellenarInterfazConDatosDelPokemonActivo(DatosCombate.PokemonJugadorActivo(), barraSaludPokemonJugador, nombreYNivelPokemonJugador, textoSaludPokemonJugador); yield return(new WaitForSeconds(0.05f)); RellenarInterfazConDatosDelPokemonActivo(DatosCombate.PokemonEnemigoActivo(), barraSaludPokemonEnemigo, nombreYNivelPokemonEnemigo, textoSaludPokemonEnemigo, false); //********************* // TRANSICION A CLARO //********************* yield return(StartCoroutine(CorrutinasComunes.AlfaDeUnoACero(pantallaDeCarga))); ////********************* //// MUESTRA MENSAJE DE ENTRENADOR O POKÉMON SALVaJE ////********************* if (tipoCombate == TipoDeCombate.PokemonSalvaje) { string texto = Ajustes.Instancia.textoPokemonSalvajeAparecio.Replace(Ajustes.Instancia.palabraParaReemplazarEnLosTexto1, DatosCombate.PokemonEnemigoActivo().Pokemon.DatosFijos.nombre); yield return(StartCoroutine(UIControlador.Instancia.Dialogo.componentePrincipal.MostrarTextoCorrutina(texto, true, false, Ajustes.Instancia.tiempoDeEsperaUltimaVentanaDialogoEnCombateSiNoSeLeeElTeclado))); while (spritesCombate.MostrarAnimacionCombate(AnimacionCombate.PokemonSalvajeAparece)) { yield return(null); } } else { string texto = Ajustes.Instancia.textoEntrenadorTeDesafia.Replace(Ajustes.Instancia.palabraParaReemplazarEnLosTexto1, entrenador.NombreNPC); yield return(StartCoroutine(UIControlador.Instancia.Dialogo.componentePrincipal.MostrarTextoCorrutina(texto, false, false, Ajustes.Instancia.tiempoDeEsperaUltimaVentanaDialogoEnCombateSiNoSeLeeElTeclado))); texto = Ajustes.Instancia.textoEntrenadorEnviaPokemon .Replace(Ajustes.Instancia.palabraParaReemplazarEnLosTexto1, entrenador.NombreNPC) .Replace(Ajustes.Instancia.palabraParaReemplazarEnLosTexto2, DatosCombate.PokemonEnemigoActivo().Pokemon.DatosFijos.nombre); yield return(StartCoroutine(UIControlador.Instancia.Dialogo.componentePrincipal.MostrarTextoCorrutina(texto, false, false, Ajustes.Instancia.tiempoDeEsperaUltimaVentanaDialogoEnCombateSiNoSeLeeElTeclado))); while (spritesCombate.MostrarAnimacionCombate(AnimacionCombate.EntrenadorEnviaPokemon)) { yield return(null); } } panelBarraSaludPokemonEnemigo.SetActive(true); yield return(new WaitForSeconds(1.5f)); string texto2 = Ajustes.Instancia.textoJugadorEnviaPokemon.Replace(Ajustes.Instancia.palabraParaReemplazarEnLosTexto1, DatosCombate.PokemonJugadorActivo().Pokemon.DatosFijos.nombre); yield return(StartCoroutine(UIControlador.Instancia.Dialogo.componentePrincipal.MostrarTextoCorrutina(texto2, true, false, Ajustes.Instancia.tiempoDeEsperaUltimaVentanaDialogoEnCombateSiNoSeLeeElTeclado))); while (spritesCombate.MostrarAnimacionCombate(AnimacionCombate.JugadorEnviaPokemon)) { yield return(null); } panelBarraSaludPokemonJugador.SetActive(true); yield return(new WaitForSeconds(1f)); menuEleccionesCombate.SetActive(true); //********************* // BUCLE HASTA FINAL DE COMBATE (ENEMIGOS DERROTADOS, JUGADOR DERROTADO O ESCAPE) //********************* IEnumerator turno1 = TurnoJugadorCorrutina(); IEnumerator turno2 = TurnoOponenteCorrutina(); while (DatosCombate.CombateActivo) { //********************* // ESPERA ACCIÓN DEL JUGADOR //********************* UIControlador.Instancia.Dialogo.campoDeTexto.text = string.Empty; UIControlador.Instancia.Dialogo.ventanaDialogo.SetActive(false); menuEleccionesCombate.SetActive(true); while (proximaAccion == null) { yield return(null); } menuEleccionesCombate.SetActive(false); //********************* // COMPROBAR EL TIPO DE ACCIÓN //********************* switch (proximaAccion.TipoAccion) { case TipoAccion.Atacar: if (DatosCombate.PokemonJugadorActivo().Pokemon.EstadisticaVelocidadCombate() >= DatosCombate.PokemonEnemigoActivo().Pokemon.EstadisticaVelocidadCombate()) { Debug.Log("Combate: el jugador ataca primero"); turno1 = TurnoJugadorCorrutina(); turno2 = TurnoOponenteCorrutina(); } else { Debug.Log("Combate: el enemigo ataca primero"); turno1 = TurnoOponenteCorrutina(); turno2 = TurnoJugadorCorrutina(); } break; case TipoAccion.UsarItem: case TipoAccion.Escapar: case TipoAccion.CambiarPokemon: turno1 = TurnoJugadorCorrutina(); turno2 = TurnoOponenteCorrutina(); break; } yield return(StartCoroutine(turno1)); yield return(StartCoroutine(turno2)); yield return(StartCoroutine(ComprobarPokemonVivos())); proximaAccion = null; } //********************* // FIN DEL COMBATE, COMPROBAR SI HA GANADO //********************* if (DatosCombate.CombateGanado) { if (tipoCombate == TipoDeCombate.Entrenador) { string texto = Ajustes.Instancia.textoEntrenadorVencido .Replace(Ajustes.Instancia.palabraParaReemplazarEnLosTexto1, entrenador.NombreNPC) .Replace(Ajustes.Instancia.palabraParaReemplazarEnLosTexto2, entrenador.Conversacion.monedasRecompensa.ToString()); yield return(StartCoroutine(UIControlador.Instancia.Dialogo.componentePrincipal.MostrarTextoCorrutina(texto, false, false, Ajustes.Instancia.tiempoDeEsperaUltimaVentanaDialogoEnCombateSiNoSeLeeElTeclado))); } } else { ControladorDatos.Instancia.Datos.CombatePerdidoQuitarMitadMonedas(); string texto = Ajustes.Instancia.textoCombatePerdido .Replace(Ajustes.Instancia.palabraParaReemplazarEnLosTexto1, ControladorDatos.Instancia.Datos.Monedas.ToString()); yield return(StartCoroutine(UIControlador.Instancia.Dialogo.componentePrincipal.MostrarTextoCorrutina(texto, false, false, Ajustes.Instancia.tiempoDeEsperaUltimaVentanaDialogoEnCombateSiNoSeLeeElTeclado))); } //********************* // TRANSICION A OSCURO //********************* yield return(StartCoroutine(CorrutinasComunes.AlfaDeCeroAUno(pantallaDeCarga))); //********************* // VALORES POR DEFECTO //********************* Camera.main.transform.rotation = Quaternion.Euler(Camera.main.transform.rotation.eulerAngles.x, Camera.main.transform.rotation.eulerAngles.y - 180, Camera.main.transform.rotation.eulerAngles.z); UIControlador.Instancia.Dialogo.ventanaDialogo.SetActive(false); UIControlador.Instancia.Dialogo.campoDeTexto.text = string.Empty; panelPrincipalUICombate.SetActive(false); spritesCombate.gameObject.SetActive(false); //********************* // SI HA PERDIDO LO ENVIAMOS AL CENTRO POKÉMON DEFINIDO EN LA ZONA //********************* if (!DatosCombate.CombateGanado) { ControladorEventos.Instancia.LanzarEvento(new EventoTeletransportarseCentroPokemon()); } //********************* // TRANSICION A CLARO //********************* yield return(StartCoroutine(CorrutinasComunes.AlfaDeUnoACero(pantallaDeCarga))); ControladorDatos.Instancia.QuitarMusicaCombate(); //********************* // TEXTO TRAS COMBATIR Y GANAR CONTRA EL ENTRENADOR, SE EJECUTA EL MÉTODO MostrarMensajeConversacion PARA QUE COMPRUEBE SI LA CONVERSACIÓN DA LOGROS E ITEMS //********************* if (tipoCombate == TipoDeCombate.Entrenador && DatosCombate.CombateGanado) { EventoMostrarMensajeConversacion e = new EventoMostrarMensajeConversacion(entrenador.Conversacion); yield return(StartCoroutine(UIControlador.Instancia.Dialogo.componentePrincipal.MostrarMensajeConversacion(e, true))); if (e.Conversacion.curarEquipoPokemonDelJugador) { yield return(StartCoroutine(CorrutinasComunes.CurarEquipoPokemon())); } } //********************* // COMPROBAMOS SI ALGÚN POKÉMON HA EVOLUCIONADO //********************* if (DatosCombate.CombateGanado) { yield return(StartCoroutine(ComprobarSiAlgunPokemonDelEquipoHaEvolucionado())); } DatosCombate = null; }
public void PrepararCombateContraEntrenador(EventoIniciarCombateContraEntrenador entrenador) { GenerarEquipoPokemonDelJugador(); GenerarEquipoPokemonDelRival(entrenador); TipoCombate = TipoDeCombate.Entrenador; }