/// <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; }