예제 #1
0
    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
    }