Exemple #1
0
    /*
     * Will generate a dungeon randomly
     */
    public DungeonBuilderOutput GenerateDungeon(int levelNumber)
    {
        List <List <RoomType> > layout = algo.GenerateMapLayout();

        DebugPrintLayout(layout);
        GameObject[]         rooms  = new GameObject[COLS * ROWS];
        DungeonBuilderOutput output = new DungeonBuilderOutput();

        for (int row = 0; row < layout.Count; row++)
        {
            for (int col = 0; col < layout[row].Count; col++)
            {
                if (layout[row][col] != RoomType.NONE)
                {
                    int          roomIndex = GetRoomIndex(row, col);
                    int          doorMask  = ComputeDoorMask(col, row, layout);
                    RoomTemplate template  = CreateRandomTemplate(layout[row][col], doorMask);
                    rooms[roomIndex] = CreateRoomFromTemplate(template);

                    if (layout[row][col] == RoomType.ENTRANCE)
                    {
                        output.entranceIndex = roomIndex;
                    }
                }
            }
        }
        output.rooms = rooms;
        return(output);
    }