Example #1
0
    // Update is called once per frame
    public void Update()
    {
        if (RoundState == E_RoundState.E_WAITING_FOR_START)
        {
            return;
        }

        for (int i = EnemiesAlive.Count - 1; i >= 0; i--)
        {
            if (EnemiesAlive[i].IsAlive == true)
            {
                continue;
            }

            EnemiesAlive.RemoveAt(i);
        }

        if (RoundState != E_RoundState.E_IN_PROGRESS)
        {
            return;
        }

        if (EnemiesAlive.Count == 0)
        {
            RoundState = E_RoundState.E_FINISHED;
        }
    }
Example #2
0
    IEnumerator SpawnEnemiesInRounds()
    {
        RoundState = E_RoundState.E_SPAWNING_ENEMIES;

        for (int i = 0; i < SpawnRounds.Length; i++)
        {
            RoundInfo round = SpawnRounds[i];

            float delay = round.SpawnDelay;

            while (delay > 0)
            {
                if (EnemiesAlive.Count == 0 || EnemiesAlive.Count <= round.MinEnemiesFomLastRound)
                {
                    break;
                }

                yield return(new WaitForSeconds(0.5f));

                delay -= 0.5f;
            }

            for (int ii = 0; ii < round.Spawns.Length; ii++)
            {
                RoundInfo.SpawnInfo spawnInfo = round.Spawns[ii];

                yield return(new WaitForSeconds(spawnInfo.SpawnDelay));

                SpawnPointEnemy spawnpoint = GetAvailableSpawnPoint(spawnInfo.SpawnPoint == null || spawnInfo.SpawnPoint.Length == 0 ? SpawnPoints : spawnInfo.SpawnPoint);

                if (spawnInfo.RotateToPlayer)
                {
                    Vector3 dir = Player.Instance.Agent.Position - spawnpoint.Transform.position;
                    dir.Normalize();
                    spawnpoint.Transform.forward = dir;
                }

                GameObject enemy = Mission.Instance.GetHuman(spawnInfo.EnemyType, spawnpoint.Transform);

                while (enemy == null)
                {
                    yield return(new WaitForSeconds(0.2f));

                    enemy = Mission.Instance.GetHuman(spawnInfo.EnemyType, spawnpoint.Transform);
                }

                CombatEffectsManager.Instance.PlaySpawnEffect(spawnpoint.Transform.position, spawnpoint.Transform.forward);

                Agent agent = enemy.GetComponent("Agent") as Agent;
                agent.PrepareForStart();

                Mission.Instance.CurrentGameZone.AddEnemy(agent);
                EnemiesAlive.Add(agent);

                yield return(new WaitForSeconds(0.1f));
            }
        }

        RoundState = E_RoundState.E_IN_PROGRESS;
    }
Example #3
0
    IEnumerator SpawnEnemies()
    {
        RoundState = E_RoundState.E_SPAWNING_ENEMIES;
        yield return(new WaitForEndOfFrame());

        for (int i = 0; i < SpawnPoints.Length; i++)
        {
            yield return(new WaitForSeconds(0.2f));

            if (SpawnPoints[i].Difficulty > Game.Instance.GameDifficulty)
            {
                continue;
            }

            Mission.Instance.CurrentGameZone.StartCoroutine(SpawnEnemy(SpawnPoints[i]));

            yield return(new WaitForSeconds(UnityEngine.Random.Range(0.1f, 0.4f)));
        }

        yield return(new WaitForSeconds(4.0f));

        RoundState = E_RoundState.E_IN_PROGRESS;
    }