public override void Reason()
    {
        if (IsGeneratorsDead())
        {
            controller.Spawner.enabled = false;

            if (shieldGone)
            {
                controller.dreadnovaShield.SetActive(false);

                if (controller.State == DreadnovaState.SHIELD_STAGE)
                {
                    controller.PerformTransition(Transition.NoShield);
                }
                else
                {
                    controller.PerformTransition(Transition.Attack);
                }
            }
            else
            {
                shieldDissolve = Mathf.Max(shieldDissolve - 0.2f * Time.deltaTime, 0);

                if (shieldDissolve == 0)
                {
                    shieldGone = true;
                }
            }
        }
        else if (GameManager.Instance.GameState == GameState.BATTLE)
        {
            if (AreaManager.Instance.EnemyCount <= controller.Spawner.Wave.GetMaxEnemyCount(waveCount) * 0.30f)
            {
                waveTime += Time.deltaTime;

                if (waveTime >= controller.Spawner.Wave.TimeBetweenWaves)
                {
                    waveTime  = 0;
                    waveCount = (waveCount + 1) % controller.Spawner.Wave.Waves.Length;

                    controller.Spawner.StartWave(waveCount, false);
                }
            }
        }
    }
Exemple #2
0
    public override void Reason()
    {
        if (GameManager.Instance.GameState == SNSSTypes.GameState.BATTLE)
        {
            if (!controller.warping)
            {
                if (controller.State == SNSSTypes.DreadnovaState.SHIELD_STAGE)
                {
                    controller.PerformTransition(Transition.Defend);
                }
                else if (controller.State == SNSSTypes.DreadnovaState.FINAL_STAGE)
                {
                    controller.PerformTransition(Transition.Attack);
                }

                controller.gameObject.SetActive(true);
            }
        }
    }
    public override void Reason()
    {
        if (GameManager.Instance.GameState == SNSSTypes.GameState.BATTLE)
        {
            if (!warped)
            {
                warped = true;
                controller.WarpDreadnova();
            }
            else if (!controller.warping)
            {
                controller.PerformTransition(Transition.NoHealth);

                GameManager.Instance.SwitchState(GameState.BATTLE_END);
            }
        }
    }