示例#1
0
    public void GenerarMapa()
    {
        /*
         * int[,] temporal = new int[,] { {1, 1, 0},
         *                              {1, 1, 1},
         *                              {1, 0, 1} };
         *
         * Debug.Log(Metodos.CantidadLosetasVecinas(temporal, 1, 1, true));
         */

        // Limpiamos el mapa de losetas.
        MapaDeLosetas.ClearAllTiles();

        // Creamos el array bidimensional del mapa
        int[,] mapa = null;

        // Generamos una semilla nueva de forma aleatoria.
        if (SemillaAleatoria)
        {
            Semilla = Random.Range(0f, 1000f);
        }

        switch (algoritmo)
        {
        case Algoritmo.PerlinNoise:
            mapa = Metodos.GenerarArray(Ancho, Alto, true);
            mapa = Metodos.PerlinNoise(mapa, Semilla);
            break;

        case Algoritmo.PerlinNoiseSuavizado:
            mapa = Metodos.GenerarArray(Ancho, Alto, true);
            mapa = Metodos.PerlinNoiseSuavisado(mapa, Semilla, Intervalo);
            break;

        case Algoritmo.RandomWalk:
            mapa = Metodos.GenerarArray(Ancho, Alto, true);
            mapa = Metodos.RandomWalk(mapa, Semilla);
            break;

        case Algoritmo.RandomWalkSueavizado:
            mapa = Metodos.GenerarArray(Ancho, Alto, true);
            mapa = Metodos.RandomWalkSuavisado(mapa, Semilla, MinimoAnchoSeccion);
            break;

        case Algoritmo.PerlinNoiseCueva:
            mapa = Metodos.GenerarArray(Ancho, Alto, false);
            mapa = Metodos.PerlinNoiseCueva(mapa, Modificador, LosBordesSonMuros, OffsetX, OffsetY, Semilla);
            break;

        case Algoritmo.RandomWalkCueva:
            mapa = Metodos.GenerarArray(Ancho, Alto, false);
            mapa = Metodos.RandomWalkCueva(mapa, Semilla, PorcentajeAEliminar, LosBordesSonMuros, MovimientoEnDiagonal);
            break;

        case Algoritmo.TunelDireccional:
            mapa = Metodos.GenerarArray(Ancho, Alto, false);
            mapa = Metodos.TunelDireccional(mapa, Semilla, AnchoMinimo, AnchoMaximo, Aspereza, DesplazamientoMaximo, Desplazamiento);
            break;

        case Algoritmo.MapaAleatorio:
            mapa = Metodos.GenerarMapaAleatorio(Ancho, Alto, Semilla, PorcentajeDeRelleno, LosBordesSonMuros);
            break;

        case Algoritmo.AutomataCelularMoore:
            mapa = Metodos.GenerarMapaAleatorio(Ancho, Alto, Semilla, PorcentajeDeRelleno, LosBordesSonMuros);
            mapa = Metodos.AutomataCelularMoore(mapa, TotalDePasadas, LosBordesSonMuros);
            break;

        case Algoritmo.AutomataCelularVonNeumann:
            mapa = Metodos.GenerarMapaAleatorio(Ancho, Alto, Semilla, PorcentajeDeRelleno, LosBordesSonMuros);
            mapa = Metodos.AutomataCelularVonNeumann(mapa, TotalDePasadas, LosBordesSonMuros);
            break;
        }

        //= Metodos.GenerarArray(Ancho, Alto, false);
        Metodos.GenerarMapa(mapa, MapaDeLosetas, Loseta);
        Debug.Log("Generar Mapa");
    }