Beispiel #1
0
    public static Dungeon gerarDungeon(Area areaPai)
    {
        //Inicializando Dungeon
        Dungeon dungeonInstanciada = new Dungeon(areaPai);

        while (dungeonInstanciada.errorFiltro || dungeonInstanciada.errorCaminho)
        {
            print("novo ciclo:");
            print("criando dungeon");
            dungeonInstanciada = new Dungeon(areaPai);
            print("inserindo dungeon pai:");
            dungeonInstanciada.inserirDungeonPai(dungeonInstanciada);
            print("fazendo super salas:");
            dungeonInstanciada.superSalas(dungeonInstanciada);
            print("inserindo os caminhos");
            dungeonInstanciada.InserirCaminhos(dungeonInstanciada); //Os valores do debugador anti-crash, são fixos. Em caso de mudar a amplitude da dungeon, é necessario observar esses valores.
            print("debungando os caminhos...");
            dungeonInstanciada.DebugPosCaminho(dungeonInstanciada);
            print("reestabelecendo as coordenadas");
            Dungeon.ReestabelecerCoords(dungeonInstanciada); // Para recuperar as coordenadas perdidas.
            print("filtrando a dungeon...");
            dungeonInstanciada.errorFiltro = dungeonInstanciada.FiltroCaminho(dungeonInstanciada);
            print("inserindo subtipos");
            dungeonInstanciada.InserirSubtipos(dungeonInstanciada);
            dungeonInstanciada.IgualarSuperSala(dungeonInstanciada);
            print("fim do ciclo");
            //Fim da inicialização.
        }
        //fora do while: acabamentos finais, que dependem de uma dungeon perfeita.
        //se um dia o spawn der erro de loop, por não caber em um corredor ou em outra regiao, é só adicionar um segundo while com o primeiro while e as funcoes de spawn dentro, e criar um bool da mesma forma que foi feito com o errorcaminho e filtro.
        dungeonInstanciada.AdicionarPlayerSpawn(areaPai, dungeonInstanciada);
        dungeonInstanciada.AdicionarBossSpawn(areaPai, dungeonInstanciada);
        //Console.WriteLine("dungeonCriada");
        return(dungeonInstanciada);
    }