void Update() { //-60 seconds so updates once per minute if (Time.timeSinceLevelLoad - lastTimeModifier >= 1 && hasBegan) { lastTimeModifier = (int)Time.timeSinceLevelLoad; //currentHealthModifier += healthModifierIncrement; foreach (GameObject spawn in m_allSpawnPoints) { EnemySpawnPointScript spawnPoint = spawn.GetComponent <EnemySpawnPointScript>(); spawnPoint.SetModifier(currentHealthModifier); } } if (Network.isServer && m_allSpawnPoints.Length != 0 && /*!shouldPause && shouldStart &&*/ (Time.timeSinceLevelLoad - lastTimeSpawn - secondsBetweenWaves) >= 1) // && hasBegan) { lastTimeSpawn = (int)Time.timeSinceLevelLoad; SendNextWaveToPoints(); } }
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++; //} }