void SendNextWaveToPoints() { waveCount++; //if (currentWave < m_waveInfos.Length) //{ List <GameObject> spawnersToBeSpawnedAt = null; //spawnersToBeSpawnedAt = GetRandomSpawnPoints(1, 1); // decide if this is a large or small wave if ((waveCount % 5 == 0 && waveCount > 0)) { List <WaveInfo> waveToBePassed = new List <WaveInfo>(); waveToBePassed.Add(singleLargeWave[Random.Range(0, singleLargeWave.Length)]); spawnersToBeSpawnedAt = GetRandomSpawnPoints(1, 1); EnemySpawnPointScript spawnPoint = spawnersToBeSpawnedAt[0].GetComponent <EnemySpawnPointScript>(); spawnPoint.AddToSpawnList(waveToBePassed); } else { int random = Random.Range(0, smallMultipleWaves.Length); WaveInfo newWave = smallMultipleWaves[random].Clone(); //waveToBePassed.Add(newWave); spawnersToBeSpawnedAt = GetRandomSpawnPoints(2, m_allSpawnPoints.Length); float[] ratios = new float[newWave.m_enemiesOnWave.Length]; for (int i = 0; i < newWave.m_enemiesOnWave.Length; ++i) { ratios[i] = newWave.m_enemiesOnWave[i].m_numEnemy / (float)spawnersToBeSpawnedAt.Count; } for (int a = 0; a < spawnersToBeSpawnedAt.Count; ++a) { WaveInfo adjustedWave = newWave.Clone(); for (int i = 0; i < newWave.m_enemiesOnWave.Length; ++i) { int shipsCount = newWave.m_enemiesOnWave[i].m_numEnemy; // int shipsPerGroup = Mathf.Min(Mathf.CeilToInt(shipsCount / (float)spawnersToBeSpawnedAt.Count), //shipsCount - a * Mathf.CeilToInt(shipsCount / (float)spawnersToBeSpawnedAt.Count)); int shipsPerGroup = Mathf.Min(Mathf.CeilToInt(ratios[i]), Mathf.CeilToInt(shipsCount / (float)(spawnersToBeSpawnedAt.Count - a))); adjustedWave.m_enemiesOnWave[i].m_numEnemy = shipsPerGroup; newWave.m_enemiesOnWave[i].m_numEnemy -= shipsPerGroup; } List <WaveInfo> waveToBePassed = new List <WaveInfo>(); waveToBePassed.Add(adjustedWave); //Debug.Log("a = " + a + " length = " + spawnersToBeSpawnedAt.Count); EnemySpawnPointScript spawnPoint = spawnersToBeSpawnedAt[a].GetComponent <EnemySpawnPointScript>(); spawnPoint.AddToSpawnList(waveToBePassed); } } // will a special wave spawn in addition? if (waveCount % 4 == 0) { List <WaveInfo> waveToBePassed = new List <WaveInfo>(); waveToBePassed.Add(specialWaves[Random.Range(0, specialWaves.Length)]); foreach (GameObject obj in spawnersToBeSpawnedAt) { EnemySpawnPointScript spawnPoint = obj.GetComponent <EnemySpawnPointScript>(); spawnPoint.AddToSpawnList(waveToBePassed); } } GameObject.FindGameObjectWithTag("GameController").GetComponent <GameStateController>().AlertAllClientsNextWaveReady(); //currentWave++; //} }