Esempio n. 1
0
    // Update is called once per frame
    void Update()
    {
        switch (actualStage)
        {
        case Stages.INTRO:
            if (!em.IsManagerSpawning())
            {
                em.SetIntroWaveIndex();
                em.StartManager();
            }
            break;

        case Stages.METEORS_TIMEWARP:
            if (afterWaveCounter < secondsAfterEachWave)
            {
                afterWaveCounter += Time.unscaledDeltaTime;
                if (afterWaveCounter >= secondsAfterEachWave)
                {
                    CleanUpBullets();
                }
            }
            else
            {
                if (!am.AsteroidsAreMoving())
                {
                    CleanUpBullets();
                    if (!meteors)
                    {
                        GameObject obj = Instantiate(Resources.Load("MeteorStormFull 1"), new Vector3(0, 0, 0), new Quaternion()) as GameObject;
                        meteors        = obj;
                        am             = obj.GetComponentInChildren <AsteroidsMovement>();
                        asteroidsDodge = am.gameObject;
                    }
                    else
                    {
                        meteors.SetActive(true);
                    }
                    asteroidsDodge.SetActive(true);
                    am.StartMovingAsteroids();
                    timewarpEffect.SetActive(true);
                    timewarpBackground.SetActive(true);
                    tm.StartTimeWarp();
                }
            }
            break;

        case Stages.METEORS_ENEMIES:
            if (!em.IsManagerSpawning())
            {
                em.SetAsteroidWaveIndex();
                TimeBombManager.activateBomb2 = true;
                tm.StopTimeWarp();
                em.StartManager();
                meteorsDelayOn          = true;
                timewarpBackgroundDelay = true;
                timewarpEffect.SetActive(false);
                afterWaveCounter = 0.0f;
            }

            break;

        case Stages.MINIBOSS_FIRSTPHASE:
            if (mbs)
            {
                if (!mbs.MiniBossStarted())
                {
                    mbs.InitiateBoss();
                    TimeBombManager.activateBomb2 = true;
                    TimeBombManager.activateBomb3 = true;
                }
            }
            else
            {
                if (!managerstartedminiboss)
                {
                    em.SetMiniBossIndex();
                    if (!em.IsManagerSpawning())
                    {
                        em.StartManager();
                    }
                }
            }
            break;

        case Stages.MINIBOSS_SECONDPHASE:
            if (!mbs.IsSecondPhase())
            {
                TimeBombManager.activateBomb2 = true;
                TimeBombManager.activateBomb3 = true;
                er.StartDownTransition();
                structure.SetActive(true);
                meteorsDelayOn = true;
                timewarpEffect.SetActive(true);
                timewarpBackground.SetActive(true);
                tm.StartTimeWarp();
                mbs.StartSecondPhase();
            }
            if (!mbs)
            {
                GoToNextStage();
                sm = structure.GetComponent <StructMovement>();
                sm.StartMovingStruct();
            }
            break;

        case Stages.STRUCT_TIMEWARP:
            if (!sm)
            {
                structure.SetActive(true);
                timewarpEffect.SetActive(true);
                timewarpBackground.SetActive(true);
                if (!tm.InTimeWarp())
                {
                    tm.StartTimeWarp();
                }
                sm = structure.GetComponent <StructMovement>();
                sm.StartMovingStruct();
            }
            if (!structureMoving)
            {
                structureMoving = true;
            }
            break;

        case Stages.STRUCT_ENEMIES:
            if (!em.IsManagerSpawning())
            {
                timewarpBackgroundDelay = true;
                em.SetStructureWaveIndex();
                timewarpEffect.SetActive(false);
                em.StartManager();
                tm.StopTimeWarp();
                foreach (StructEnemyStageTunnel sest in battleTunnel.GetComponentsInChildren <StructEnemyStageTunnel>())
                {
                    sest.enabled = true;
                }
                removeBattleStruct = false;
            }
            break;

        case Stages.BOSS_TRANSITION:
            if (afterWaveCounter < secondsAfterEachWave)
            {
                afterWaveCounter += Time.unscaledDeltaTime;
                if (afterWaveCounter >= secondsAfterEachWave)
                {
                    CleanUpBullets();
                    CleanUpEnemies();
                }
            }
            else
            {
                if (!blackholeenabled)
                {
                    blackHole.SetActive(true);
                    timewarpEffect.SetActive(true);
                    tm.StartTimeWarp();

                    blackholeenabled = true;
                }
                if (!removeBattleStruct)
                {
                    if (battleTunnel.GetComponentsInChildren <StructEnemyStageTunnel>().Length > 0)
                    {
                        foreach (StructEnemyStageTunnel sest in battleTunnel.GetComponentsInChildren <StructEnemyStageTunnel>())
                        {
                            sest.FinishSequence();
                        }
                    }
                    else
                    {
                        Destroy(battleTunnel);
                        removeBattleStruct = true;
                    }
                }
                if (onBlackScreen)
                {
                    if (blackScreenCounter < blackScreenDuration)
                    {
                        blackScreenCounter += Time.deltaTime;
                    }
                    else
                    {
                        GameObject.FindGameObjectWithTag("MainCamera").GetComponent <PostProcessingSwitcher>().SwitchPostProcess(PostProcessingSwitcher.Profiles.MAGNETIC_STORM);
                        GoToNextStage();
                    }
                }
            }
            break;

        case Stages.BOSS:
            if (!bossEnabled)
            {
                // Activate boss lights
                //Destroy(structlights);
                //bosslights.SetActive(true);
                if (secondsBeforeBoss > 0.0f)
                {
                    secondsBeforeBoss -= Time.deltaTime;
                }
                else
                {
                    ams.SetBlackHoleReverb();
                    tm.StopTimeWarp();
                    ams.ChangeToBossMusic();
                    TimeBombManager.activateBomb2 = true;
                    TimeBombManager.activateBomb3 = true;
                    boss.SetActive(true);
                    bossEnabled = true;
                }
            }
            break;

        case Stages.ESCAPE:
            GameObject.FindGameObjectWithTag("Player").GetComponent <SwitchablePlayerController>().isEnding = true;
            GameObject.FindGameObjectWithTag("UI_InGame").GetComponent <ChangeScene>().shutdown             = true;
            break;
        }
        if (meteorsDelayOn)
        {
            ManageMeteor();
        }
        if (timewarpBackgroundDelay)
        {
            ManageTimeWarpBackground();
        }
    }