BBGamelib.CCMenu.alignItemsInRowsWithArray C# (CSharp) Method

alignItemsInRowsWithArray() private method

private alignItemsInRowsWithArray ( int columns ) : void
columns int
return void
		void alignItemsInRowsWithArray(int[]  columns){
			List<int> columnWidths = new List<int> ();
			List<int> columnHeights = new List<int> ();
			
			int width = -10, columnHeight = -5;
			int column = 0, columnWidth = 0, rowsOccupied = 0, columnRows;

			var enumerator = _children.GetEnumerator();
			while (enumerator.MoveNext()) {
				CCMenuItem item = (CCMenuItem)enumerator.Current;
				NSUtils.Assert( column < columns.Length, "Too many menu items for the amount of rows/columns.");
				
				columnRows = columns[column];
				NSUtils.Assert( columnRows!=0, "Can't have zero rows on a column");
				
				Vector2 itemSize = item.contentSize;
				columnWidth = Mathf.RoundToInt(Mathf.Max(columnWidth, itemSize.x));
				columnHeight += Mathf.RoundToInt(itemSize.y + 5);
				++rowsOccupied;
				
				if(rowsOccupied >= columnRows) {
					columnWidths.Add(columnWidth);
					columnHeights.Add(columnHeight);
					width += columnWidth + 10;
					
					rowsOccupied = 0;
					columnWidth = 0;
					columnHeight = -5;
					++column;
				}
			}
			NSUtils.Assert( rowsOccupied==0, "Too many rows/columns for available menu items.");
			
			Vector2 winSize = CCDirector.sharedDirector.winSize;
			
			column = 0; columnWidth = 0; columnRows = 0;
			float x = -width / 2, y=0;

			enumerator = _children.GetEnumerator();
			while (enumerator.MoveNext()) {
				CCMenuItem item = (CCMenuItem)enumerator.Current;
				if(columnRows == 0) {
					columnRows = columns[column];
					y = (columnHeights[column] + winSize.y) / 2;
                }
                
                Vector2 itemSize = item.contentSize;
				columnWidth = Mathf.RoundToInt(Mathf.Max(columnWidth, itemSize.x));
				item.position=new Vector2(x + columnWidths[column] / 2,
                                               y - winSize.y / 2);
                
                y -= itemSize.y + 10;
                ++rowsOccupied;
                
                if(rowsOccupied >= columnRows) {
					x += columnWidth + 5;
					
					rowsOccupied = 0;
					columnRows = 0;
					columnWidth = 0;
					++column;
				}
			}
		}
		#endregion