Пример #1
0
    /// <summary>
    /// Divides clusters of rooms into individual rooms
    /// </summary>
    void BlocksToRooms()
    {
        while (Blocks.Count > 0)
        {
            Rect block = Blocks.Dequeue();

            if (WantSplitBlock(block))
            {
                Rect block_a, block_b;
                RandomBlockSplit(block, out block_a, out block_b);

                if (CoinFlip())
                {
                    Blocks.Enqueue(block_a);
                    Blocks.Enqueue(block_b);
                }
                else
                {
                    Blocks.Enqueue(block_b);
                    Blocks.Enqueue(block_a);
                }
            }
            else
            {
                Rooms.Enqueue(block);
            }
        }

        Blocks = null;
    }