Exemple #1
0
    void HandleWave()
    {
        if (stateSystem.IsWaitingNextWave())
        {
            if (waveSystem.IsLastWave())
            {
                stateSystem.SetWaveState(StateSystem.WaveState.Done);
            }
        }
        else if (stateSystem.IsWaitingWaveClear())
        {
            if (enemies.Count == 0)
            {
                playerHealth.ResetFullHealth();
                playerAction.ResetAllCooldowns();
                hud.ResetAllCooldownIndicators();

                //player1.GetComponent<PlayerController>().AllowAttack(false);
                stateSystem.SetWaveState(StateSystem.WaveState.WaitingNextWave);

                // Reset monster spawn sort order
                spawnSortOrder = defaultSpawnSortOrder;

                hud.ShowNextWaveBtn();
            }
        }
        else if (stateSystem.IsWaitingWaveSpawn())
        {
            if (enemies.Count < 40)
            {
                if (getNewSpawn)
                {
                    if (waveSystem.IsWaveOver())
                    {
                        stateSystem.SetWaveState(StateSystem.WaveState.WaitingWaveClear);
                        return;
                    }

                    spawn          = waveSystem.GetSpawn();
                    spawnReadyTime = Time.timeSinceLevelLoad + spawn.spawnDelay;
                    getNewSpawn    = false;
                }

                if (Time.timeSinceLevelLoad > spawnReadyTime)
                {
                    Spawn();
                    getNewSpawn = true;
                }
            }
        }
    }