示例#1
0
        public override void Update(GameTime gameTime)
        {
            switch (SpawnStates)
            {
            case SpawnStates.Spawn:
                ScoreManager.Level++;
                SpawnZombies(ScoreManager.Level);
                this.SpawnStates = SpawnStates.SpawnCoolDown;
                CoolDownTimer    = 1000 + ScoreManager.Level * 200;
                break;

            case SpawnStates.SpawnCoolDown:
                if (CoolDownTimer <= 0 || zombieManager.Zombies.Count == 0)
                {
                    this.SpawnStates = SpawnStates.SpawnedZombies;
                }
                else
                {
                    CoolDownTimer--;
                }
                break;

            case SpawnStates.SpawnedZombies:
                if (zombieManager.Zombies.Count == 0)
                {
                    this.SpawnStates = SpawnStates.Spawn;
                }
                break;
            }



            base.Update(gameTime);
        }
示例#2
0
        public ZombieSpawner(Game game, ZombieManager ZombieManager) : base(game)
        {
            zombieManager = ZombieManager;
            CoolDownTimer = 0;
            SpawnStates   = SpawnStates.SpawnedZombies;

            Random  = new Random();
            Random4 = new Random();
        }
    IEnumerator SpawnWave(Wave _wave)
    {
        Debug.Log("Spawnando Onda: " + _wave.name);
        state = SpawnStates.Spawning;

        for (int i = 0; i < _wave.amount; i++)
        {
            SpawnZombie(_wave.zombie);
            livingEnemies++;
            yield return(new WaitForSeconds(1f / _wave.rate));
        }

        state = SpawnStates.Waiting;

        yield break;
    }
    IEnumerator SpawnWave(Wave wave)
    {
        spawnState = SpawnStates.SPAWNING;

        for (int i = 0; i < wave.count; i++)
        {
            GameObject enemy = wave.enemies[Random.Range(0, wave.enemies.Count)];
            SpawnEnemy(enemy);
            yield return(new WaitForSeconds(1f / wave.rate));
        }


        spawnState = SpawnStates.WAITING;

        yield break;
    }
示例#5
0
    void Start()
    {
        state = SpawnStates.COUNTING;
        Invoke("StartCountdown", timeToStartFirstWave);
        if (File.Exists(Application.persistentDataPath + "/rbSave.bp"))
        {
            for (int i = 0; i < waves.Length; i++)
            {
                if (waves[i].name == SaveLoad.saveGame.data.waveName)
                {
                    nextWave = i - 1;
                }
            }
        }

        GameObject.FindGameObjectWithTag("Player").GetComponent <Health>().OnDeath().AddListener(DisableObject);
    }
    void WaveCompleted()
    {
        Debug.Log("Onda Completada");

        state         = SpawnStates.Counting;
        waveCountDown = timeBetweenWaves;
        completeWaveFeedback.SetActive(true);

        if (nextWave + 1 > waves.Length - 1)
        {
            nextWave = 0;
            Debug.Log("Completou todas as ondas - Looping...");
        }
        else
        {
            nextWave++;
        }
        StartCoroutine(CompleteWaveOff());
    }
示例#7
0
    void StartCountdown()
    {
        state    = SpawnStates.COUNTING;
        TimeLeft = timeBetweenWaves;



        if (nextWave > waves.Length - 2)
        {
            OnLevelComplete.Invoke();

            state = SpawnStates.WON;
        }
        else
        {
            nextWave++;
            onCountdown.Invoke();
        }

        waveCompleted = false;
    }
    private void Update()
    {
        if (spawnState == SpawnStates.WAITING)
        {
            wavePercent.value = currentEnemyNum;
            if (!EnemyIsAlive())
            {
                //print("Wave finished. Time till next wave: " + waveCountDown);
                wave.count   += 3;
                waveCountDown = timeBetweenWaves;
                spawnState    = SpawnStates.COUNTING;
            }
            else
            {
                return;
            }
        }

        if (waveCountDown <= 0)
        {
            if (spawnState != SpawnStates.SPAWNING)
            {
                if (nextWave == 3)
                {
                    return;
                }
                StartCoroutine(SpawnWave(wave));
                nextWave++;
                wave1.text           = nextWave.ToString();
                wave2.text           = (nextWave - 1).ToString();
                wavePercent.maxValue = wave.count;
                wavePercent.value    = wave.count;
                currentEnemyNum      = wave.count;
            }
        }
        else
        {
            waveCountDown -= Time.deltaTime;
        }
    }
示例#9
0
    IEnumerator SpawnWave(Wave wave)
    {
        state = SpawnStates.SPAWNING;

        if (state == SpawnStates.SPAWNING)
        {
            onWaveChange.Invoke();
        }

        for (int i = 0; i < wave.enemies.Length; i++)
        {
            for (int j = 0; j < wave.enemies[i].count; j++)
            {
                SpawnEnemy(wave.enemies[i].enemy);
                yield return(new WaitForSeconds(1f / rate));
            }
        }

        state = SpawnStates.WAITING;

        yield break;
    }
示例#10
0
 void setCurrentState(SpawnStates state)
 {
     currentState = state;
 }