private (List <FormationCell> cells, Queue <IncomingWaveQueueItem> waves) BuildFormation(List <FormationLineSettings> enemiesLines, int maxRowsCount) { var incomingWaves = new Queue <IncomingWaveQueueItem>(); var allCells = new List <FormationCell>(enemiesLines.Sum(line => line.EnemiesInLine)); for (var lineIndex = 0; lineIndex < enemiesLines.Count; lineIndex++) { var line = enemiesLines[lineIndex]; var cells = Enumerable.Range(0, line.EnemiesInLine) .Select(columnIndex => FormationCell.Create(transform, lineIndex, columnIndex, enemiesLines.Count, line.EnemiesInLine, maxRowsCount)) .ToList(); allCells.AddRange(cells); incomingWaves.Enqueue(new IncomingWaveQueueItem(line, cells)); } return(allCells, incomingWaves); }
public EnemyShip Spawn(FormationCell cell, EnemyType enemyType) { var pool = SelectPool(enemyType); return(pool.Spawn(cell.transform, _levelSettings)); }