Exemplo n.º 1
0
    void generateDungeon()
    {
        // Dungeon GO
        dungeon      = new GameObject();
        dungeon.name = "Dungeon";

        // Corridors GO
        corridors      = new GameObject();
        corridors.name = "Corridors";
        corridors.transform.SetParent(dungeon.transform);

        // Create starting node
        mainNode                     = new DungeonNode();
        mainNode.nodeLevel           = 0;
        mainNode.startX              = 0;
        mainNode.startZ              = 0;
        mainNode.endX                = dungeonWidth;
        mainNode.endZ                = dungeonDepth;
        mainNode.NodeId              = 'A';
        mainNode.nodeGameObject      = new GameObject();
        mainNode.nodeGameObject.name = "Nodo A";
        mainNode.nodeGameObject.transform.SetParent(dungeon.transform);
        dungeonNodes.Add(mainNode);

        PerformanceController.DungeonPerformanceReport report = new PerformanceController.DungeonPerformanceReport();

        // Generamos el grafo
        System.DateTime date = System.DateTime.Now;
        generateDungeonGraph(mainNode);

        // Creamos las salas a partir del grafo
        createRoomsFromGraph();
        report.rooms += (float)(System.DateTime.Now - date).TotalMilliseconds;

        // Inicializamos el diccionario
        initDungeonCells();

        // Creamos lo pasillos entre las salas
        date = System.DateTime.Now;
        createCorridorsInBetweenNodes();
        report.corridors += (float)(System.DateTime.Now - date).TotalMilliseconds;

        // Spawn Rooms
        date = System.DateTime.Now;
        spawnRooms();
        report.rooms += (float)(System.DateTime.Now - date).TotalMilliseconds;

        // Spawn corridors
        date = System.DateTime.Now;
        spawnCorridors();
        report.corridors += (float)(System.DateTime.Now - date).TotalMilliseconds;

        // Buscamos intersecciones
        date = System.DateTime.Now;
        generateDungeonBlocks();
        report.block += (float)(System.DateTime.Now - date).TotalMilliseconds;

        date = System.DateTime.Now;
        placeTreasureRooms();

        placeEnemies();
        report.misc += (float)(System.DateTime.Now - date).TotalMilliseconds;

        PerformanceController.addReport(report);
    }