public void SetUpConditions(EnemyWave wave) { ArenaManager arenaManager = ArenaManager.arenaManager; if (arenaManager == null) { return; } WaveConditionsChanged = wave.CheckIfReadyToSpawnWave; #region Time if (minTimeSinceFightBeginning == 0) { validatedTime = true; } else { arenaManager.AddTimeToCheck(new EnemyWaveWithNeededTime(wave, minTimeSinceFightBeginning)); } #endregion #region Kills if (minKillsSinceFightBeginning == 0) { validatedEnemyKilled = true; } else { arenaManager.AddKillsToCheck(new EnemyWaveWithNeededKills(wave, minKillsSinceFightBeginning)); } #endregion #region Objects to Destroy damageListenerToKill = new List <IDamageReceiver>(); foreach (GameObject targetObject in objectsToDestroy) { if (targetObject != null) { IDamageReceiver damageReceiver = targetObject.GetComponent <IDamageReceiver>(); if (damageReceiver != null) { damageListenerToKill.Add(damageReceiver); damageReceiver.OnDeath += new OnLifeEvent(RemoveTargetToDestroy); } } } #endregion #region Triggers remainingZones = new List <TargetZone>(); foreach (TargetZone zoneToGoTo in zonesToGoTo) { remainingZones.Add(zoneToGoTo); zoneToGoTo.OnPlayerEnter += RemoveZoneToGoTo; zoneToGoTo.StartZone(); } #endregion }