private void IniciarCombateContraPokemonSalvaje(EventoBase mensaje)
 {
     if (DatosCombate == null)
     {
         DatosCombate = new DatosCombate();
         botonEscapar.interactable = true;
         pokemonSalvaje            = (EventoIniciarCombatePokemonSalvaje)mensaje;
         ControladorDatos.Instancia.AniadirCorrutinaACola(CombateCorrutina(TipoDeCombate.PokemonSalvaje));
     }
 }
Example #2
0
    private void GenerarPokemonSalvaje(EventoIniciarCombatePokemonSalvaje pokemonSalvaje)
    {
        int posibilidadTotal = 0;

        ProbabilidadEncuentroPokemon[] pokemonOrdenadorPorProbabilidad = new ProbabilidadEncuentroPokemon[pokemonSalvaje.PokemonEnLaZona.pokemons.Count];

        //Almacenamos el porcentaje de todos los pokémon
        for (int i = 0; i < pokemonSalvaje.PokemonEnLaZona.pokemons.Count; i++)
        {
            posibilidadTotal += pokemonSalvaje.PokemonEnLaZona.pokemons[i].posibilidadAparicion;
        }

        //Calculamos el porcentaje individual de cada pokémon en proporción al total
        for (int i = 0; i < pokemonSalvaje.PokemonEnLaZona.pokemons.Count; i++)
        {
            pokemonOrdenadorPorProbabilidad[i].probabilidad = ((pokemonSalvaje.PokemonEnLaZona.pokemons[i].posibilidadAparicion * 100) / posibilidadTotal);
            pokemonOrdenadorPorProbabilidad[i].pokemon      = pokemonSalvaje.PokemonEnLaZona.pokemons[i];
        }
        //Lo ordenamos por porcentaje de menos a más
        pokemonOrdenadorPorProbabilidad = pokemonOrdenadorPorProbabilidad.OrderBy(i => i.probabilidad).ToArray();

        //Sumamos el porcentaje del pokémon anterior al actual para establecer el rango de aparición y que no se solapen
        float porcentajeYaAsignado = 0;

        for (int i = 0; i < pokemonOrdenadorPorProbabilidad.Length; i++)
        {
            pokemonOrdenadorPorProbabilidad[i].probabilidad += porcentajeYaAsignado;
            porcentajeYaAsignado = pokemonOrdenadorPorProbabilidad[i].probabilidad;
        }
        float random         = UnityEngine.Random.Range(0f, 100f);
        int   nivelPokemon   = UnityEngine.Random.Range(pokemonSalvaje.PokemonEnLaZona.nivelMinimoPokemonSalvaje, pokemonSalvaje.PokemonEnLaZona.nivelMaximoPokemonSalvaje + 1);
        int   calidadPokemon = UnityEngine.Random.Range(Ajustes.calidadMinimaPokemon, Ajustes.calidadMaximaPokemon + 1);

        for (int i = 0; i < pokemonOrdenadorPorProbabilidad.Length; i++)
        {
            if (random < pokemonOrdenadorPorProbabilidad[i].probabilidad || i == pokemonOrdenadorPorProbabilidad.Length - 1) //Si es el último pokémon y no se ha asgiando todavía el pokémon salvaje forzamos que se asigne el último
            {
                EquipoPokemonEnemigos.Add(new PokemonLuchador(pokemonOrdenadorPorProbabilidad[i].pokemon.id, nivelPokemon, calidadPokemon, new AtaqueID[] { pokemonOrdenadorPorProbabilidad[i].pokemon.ataque1, pokemonOrdenadorPorProbabilidad[i].pokemon.ataque2, pokemonOrdenadorPorProbabilidad[i].pokemon.ataque3, pokemonOrdenadorPorProbabilidad[i].pokemon.ataque4 }));
                break;
            }
        }
    }
Example #3
0
 public void PrepararCombateContraPokemonSalvaje(EventoIniciarCombatePokemonSalvaje pokemon)
 {
     GenerarEquipoPokemonDelJugador();
     GenerarPokemonSalvaje(pokemon);
     TipoCombate = TipoDeCombate.PokemonSalvaje;
 }