Exemplo n.º 1
0
    public AtaqueCombate Atacar(AtaqueID ataqueID)
    {
        AtaqueCombate proximoAtaque = new AtaqueCombate();

        proximoAtaque.haFallado  = ComprobarSiElAtaqueFalla(ataqueID);
        proximoAtaque.tipoAtaque = Pokemon.Ataque(ataqueID).DatosFijos.tipoDeAtaque;

        if (!proximoAtaque.haFallado)
        {
            proximoAtaque.id    = ataqueID;
            proximoAtaque.danio = CalcularDanio(ataqueID);
            proximoAtaque.estadoAlteradoProvocado = CalcularEstadoAlterado(ataqueID);
            if (ComprobarSiSeAutoCura(ataqueID))
            {
                proximoAtaque.pokemonOriginalSeCura             = true;
                proximoAtaque.porcentajeCuracionPokemonOriginal = Pokemon.Ataque(ataqueID).DatosFijos.porcentajeDeCuracion;
            }
            if (ComprobarSiSeAutoInflingeDanio(ataqueID))
            {
                proximoAtaque.pokemonOriginalSeHaceDanio     = true;
                proximoAtaque.porcentajeDanioPokemonOriginal = Pokemon.Ataque(ataqueID).DatosFijos.porcentajeDeDanioAutoInflingido;
            }
        }
        Debug.Log(string.Concat("Pokemon ", Pokemon.ID.ToString(), " va a atacar: ", ataqueID.ToString(), " ", proximoAtaque.ToString()));
        return(proximoAtaque);
    }
Exemplo n.º 2
0
 public EventoProximaAccionCombate(TipoAccion tipoAccion, AtaqueID ataque, Item item, PokemonModelo proximoPokemon = null)
 {
     TipoAccion     = tipoAccion;
     Ataque         = ataque;
     Item           = item;
     ProximoPokemon = proximoPokemon;
 }
    public bool MostrarAnimacionAtaque(AtaqueID id, Atacante atacante)
    {
        Ataque ataque = ControladorDatos.Instancia.ObtenerAtaque(id);

        if (ataque.animacionAtaque == null)
        {
            return(false);
        }

        if (!animacionAsignada)
        {
            animacionAsignada = true;

            if (atacante == Atacante.Enemigo)
            {
                contenedorAnimadorAtaque.transform.localScale = new Vector3(-1, 1, 1);
            }
            else
            {
                contenedorAnimadorAtaque.transform.localScale = new Vector3(1, 1, 1);
            }
        }

        if (!animadorAtaque.ReproducirClipAnimacionAtaque(ataque.animacionAtaque))
        {
            spriteAtaque.sprite = null;
            animacionAsignada   = false;
            return(false);
        }
        return(true);
    }
Exemplo n.º 4
0
 public void OnPointerClick(PointerEventData eventData)
 {
     if (ataqueID != AtaqueID.NINGUNO)
     {
         ControladorEventos.Instancia.LanzarEvento(new EventoProximaAccionCombate(TipoAccion.Atacar, ataqueID, null));
         ataqueID = AtaqueID.NINGUNO;
     }
 }
Exemplo n.º 5
0
    private int CalcularDanio(AtaqueID ataqueID)
    {
        float valorPorElementoDelPokemon    = ValorPorElementoDelPokemon(ataqueID);
        int   valorPorEstadisticaDelPokemon = ValorPorEstadisticaDelPokemon(ataqueID);
        float valorPorPotenciaDelAtaqueBase = (Pokemon.Ataque(ataqueID).DatosFijos.poder / 10);

        return((int)((valorPorEstadisticaDelPokemon + valorPorPotenciaDelAtaqueBase) * valorPorElementoDelPokemon));
    }
Exemplo n.º 6
0
 private bool ComprobarSiSeAutoInflingeDanio(AtaqueID ataqueID)
 {
     if (Pokemon.Ataque(ataqueID).DatosFijos.seAutoInflingeDanio)
     {
         return(ComprobarProbabilidad(Pokemon.Ataque(ataqueID).DatosFijos.probabilidadDeAutoInflingirseDanio));
     }
     return(false);
 }
Exemplo n.º 7
0
 private bool ComprobarSiSeAutoCura(AtaqueID ataqueID)
 {
     if (Pokemon.Ataque(ataqueID).DatosFijos.seAutoCura)
     {
         return(ComprobarProbabilidad(Pokemon.Ataque(ataqueID).DatosFijos.probabilidadDeCurarse));
     }
     return(false);
 }
Exemplo n.º 8
0
    private float ValorPorElementoDelPokemon(AtaqueID ataqueID)
    {
        float multiplicadorTipo = 1;

        if (Pokemon.Ataque(ataqueID).DatosFijos.ataqueElemento == Pokemon.DatosFijos.tipoElemento1 || Pokemon.Ataque(ataqueID).DatosFijos.ataqueElemento == Pokemon.DatosFijos.tipoElemento2)
        {
            multiplicadorTipo = 1.2f;
        }
        return(multiplicadorTipo);
    }
Exemplo n.º 9
0
 public void AprenderNuevoAtaque(AtaqueID ataqueAnterior, AtaqueID nuevoAtaque)
 {
     for (int i = 0; i < _ataques.Length; i++)
     {
         if (_ataques[i].ID == ataqueAnterior)
         {
             _ataques[i] = new AtaquesModelo(nuevoAtaque);
             break;
         }
     }
 }
Exemplo n.º 10
0
 private EstadoAlterado CalcularEstadoAlterado(AtaqueID ataqueID)
 {
     if (Pokemon.Ataque(ataqueID).DatosFijos.provocaEstadoAlterado != EstadoAlterado.NINGUNO)
     {
         if (ComprobarProbabilidad(Pokemon.Ataque(ataqueID).DatosFijos.probabilidadDeProvocarEstadoAlterado))
         {
             return(Pokemon.Ataque(ataqueID).DatosFijos.provocaEstadoAlterado);
         }
     }
     return(EstadoAlterado.NINGUNO);
 }
Exemplo n.º 11
0
 public AtaquesModelo Ataque(AtaqueID id)
 {
     for (int i = 0; i < _ataques.Length; i++)
     {
         if (_ataques[i].ID == id)
         {
             return(_ataques[i]);
         }
     }
     return(null);
 }
Exemplo n.º 12
0
 public Ataque ObtenerAtaque(AtaqueID ataqueID)
 {
     if (!contenedorAtaques.ContainsKey(ataqueID))
     {
         string nombreFichero = vinculadorResources.ObtenerNombreFicheroAtaque(ataqueID);
         if (!string.IsNullOrEmpty(nombreFichero))
         {
             Ataque ataque = (Ataque)Resources.Load(nombreFichero);
             contenedorAtaques.Add(ataque.ID, ataque);
         }
     }
     return(contenedorAtaques[ataqueID]);
 }
Exemplo n.º 13
0
    private int ValorPorEstadisticaDelPokemon(AtaqueID ataqueID)
    {
        int multiplicadorTipoDeAtaque = 1;

        if (Pokemon.Ataque(ataqueID).DatosFijos.tipoDeAtaque == TipoDeAtaque.Fisico)
        {
            multiplicadorTipoDeAtaque = Pokemon.EstadisticaAtaqueFisico();
        }
        else
        {
            multiplicadorTipoDeAtaque = Pokemon.EstadisticaAtaqueMagico();
        }
        return(multiplicadorTipoDeAtaque);
    }
Exemplo n.º 14
0
 public string ObtenerNombreFicheroAtaque(AtaqueID ataque)
 {
     for (int i = 0; i < listaAtaque.Count; i++)
     {
         if (listaAtaque[i].ID == ataque)
         {
             return(listaAtaque[i].nombreFichero);
         }
     }
     if (ataque != AtaqueID.NINGUNO)
     {
         Debug.LogWarning(string.Concat("No se ha encontrado ningún Ataque con el ID ", ataque.ToString()));
     }
     return(string.Empty);
 }
Exemplo n.º 15
0
 public void MostrarDatosAtaque(AtaquesModelo ataque)
 {
     if (ataque == null || ataque.ID == AtaqueID.NINGUNO)
     {
         gameObject.SetActive(false);
     }
     else
     {
         nombre.text   = ataque.DatosFijos.nombre;
         pp.text       = ataque.TextoPPActualYMaximo();
         elemento.text = Herramientas.TextoAtaqueElemento(ataque.DatosFijos.ataqueElemento);
         poder.text    = ataque.DatosFijos.poder.ToString();
         ataqueID      = ataque.ID;
         gameObject.SetActive(true);
     }
 }
Exemplo n.º 16
0
    private bool ComprobarSiElAtaqueFalla(AtaqueID ataqueID)
    {
        //TODO: implementar
        switch (Pokemon.EstadoAlterado)
        {
        case EstadoAlterado.Paralizado:
            break;

        case EstadoAlterado.Confuso:
            break;

        case EstadoAlterado.Dormido:
            break;

        case EstadoAlterado.Envenedado:
            break;
        }

        //Devolvemos lo contrario al método
        return(!ComprobarProbabilidad(Pokemon.Ataque(ataqueID).DatosFijos.precision));
    }
    public void MostrarVentana(PokemonModelo pokemon, AtaqueID nuevoAtaque)
    {
        this.pokemon        = pokemon;
        nuevoAtaqueAprender = ControladorDatos.Instancia.ObtenerAtaque(nuevoAtaque);
        AtaqueSeleccionado  = null;

        nuevoAtaqueNombre.text     = nuevoAtaqueAprender.nombre;
        nuevoAtaqueElemento.text   = Herramientas.TextoAtaqueElemento(nuevoAtaqueAprender.ataqueElemento);
        nuevoAtaquePoderYTipo.text = string.Concat(nuevoAtaqueAprender.poder, " ", nuevoAtaqueAprender.TextoTipoAtaque());

        for (int i = 0; i < detallesAtaques.Length; i++)
        {
            detallesAtaques[i].gameObject.SetActive(false);
        }

        for (int i = 0; i < pokemon.Ataques().Length; i++)
        {
            detallesAtaques[i].MostrarAtaque(pokemon.Ataques()[i].DatosFijos, this);
        }

        gameObject.SetActive(true);
    }
Exemplo n.º 18
0
 public AtaquesModelo(AtaqueID id)
 {
     this.id = id;
     this.pp = DatosFijos.ppMaximos;
 }
Exemplo n.º 19
0
 private bool AtaqueCritico(AtaqueID ataqueID)
 {
     return(ComprobarProbabilidad(Pokemon.Ataque(ataqueID).DatosFijos.posibilidadCritico));
 }
Exemplo n.º 20
0
 public void RestarPP(AtaqueID ataque)
 {
     Pokemon.Ataque(ataque).RestarPP();
 }
Exemplo n.º 21
0
 public AtaqueVinculado(AtaqueID ataque, string nombreFichero)
 {
     this.ID            = ataque;
     this.nombreFichero = nombreFichero;
 }