void Update()
 {
     if (GameManager.levelState == LevelState.Executing)
     {
         BubbleMotionTasks.Update();
     }
 }
Exemple #2
0
 private void Update()
 {
     if (phases.IsFinished)
     {
         OnKilled();
         return;
     }
     phases.Update();
 }
Exemple #3
0
    private IEnumerator LoadLevel(int index, LoadLevelType Type, GameObject LevelButton = null)
    {
        switch (Type)
        {
        case LoadLevelType.FromMainMenu:

            SetMainMenuEnable(false);

            ParallelTasks MainMenuDisappearTask = GetMainMenuDisappearTask(PlayButton);

            while (!MainMenuDisappearTask.IsFinished)
            {
                MainMenuDisappearTask.Update();
                yield return(null);
            }


            break;

        case LoadLevelType.FromSelectionMenu:

            BackButton.GetComponent <BoxCollider2D>().enabled = false;
            SetSelectLevelEnable(false);

            ParallelTasks LevelButtonDisappearTasks = new ParallelTasks();

            foreach (Transform child in AllLevelButtons.transform)
            {
                if (child.gameObject == LevelButton)
                {
                    LevelButtonDisappearTasks.Add(child.GetComponent <GameButton>().GetSelectedDisappearTask());
                }
                else
                {
                    LevelButtonDisappearTasks.Add(child.GetComponent <GameButton>().GetUnselectedDisappearTask());
                }
            }

            foreach (Transform child in LevelSelectionArrows.transform)
            {
                LevelButtonDisappearTasks.Add(child.GetComponent <GameButton>().GetUnselectedDisappearTask());
            }

            LevelButtonDisappearTasks.Add(BackButton.GetComponent <GameButton>().GetUnselectedDisappearTask());

            while (!LevelButtonDisappearTasks.IsFinished)
            {
                LevelButtonDisappearTasks.Update();
                yield return(null);
            }

            break;

        case LoadLevelType.LevelFinish:

            BackButton.GetComponent <BoxCollider2D>().enabled = false;

            levelState = LevelState.Clear;

            SerialTasks LevelEndTasks = new SerialTasks();

            LevelEndTasks.Add(GetLevelEndUITask(false));
            LevelEndTasks.Add(new WaitTask(PerformLevelFinishEffectWaitTime));
            LevelEndTasks.Add(GetBubblePowerUpTasks());
            LevelEndTasks.Add(GetShockWaveEmitAndFadeTasks());
            LevelEndTasks.Add(GetBubbleMoveOutPrepareTasks());

            while (!LevelEndTasks.IsFinished)
            {
                LevelEndTasks.Update();
                yield return(null);
            }

            LevelEndTasks.Clear();

            LevelEndTasks.Add(GetBubbleEscapeTasks());
            LevelEndTasks.Add(new WaitTask(StartNewLevelWaitTime));

            while (!LevelEndTasks.IsFinished)
            {
                LevelEndTasks.Update();
                yield return(null);
            }

            ClearUseableBubbles();

            break;
        }


        if (index <= MaxLevelIndex)
        {
            levelState = LevelState.SetUp;

            if (CurrentSaveInfo.CurrentLevel >= MinLevelIndex && Type == LoadLevelType.LevelFinish)
            {
                SortedLevelList[CurrentSaveInfo.CurrentLevel - MinLevelIndex].SetActive(false);
                Destroy(SortedLevelList[CurrentSaveInfo.CurrentLevel - MinLevelIndex]);
                SortedLevelList[CurrentSaveInfo.CurrentLevel - MinLevelIndex] = CopiedLevel;
            }

            CopiedLevel = Instantiate(SortedLevelList[index - MinLevelIndex]);
            CopiedLevel.transform.parent = AllLevel.transform;
            CopiedLevel.SetActive(false);
            SortedLevelList[index - MinLevelIndex].SetActive(true);
            ActivatedLevel = SortedLevelList[index - MinLevelIndex];

            if (Type == LoadLevelType.LevelFinish)
            {
                CurrentSaveInfo.LevelFinished[CurrentSaveInfo.CurrentLevel - 1] = true;
            }
            CurrentSaveInfo.CurrentLevel = index;
            SaveProgress();

            EventManager.instance.Fire(new LevelLoaded(CurrentSaveInfo.CurrentLevel));

            SerialTasks LevelStartUITasks = GetLevelStartTask();

            while (!LevelStartUITasks.IsFinished)
            {
                LevelStartUITasks.Update();
                yield return(null);
            }

            levelState = LevelState.Play;

            EventManager.instance.Fire(new FinishLoadLevel(CurrentSaveInfo.CurrentLevel));

            ParallelTasks BackButtonAppearTask = BackButton.GetComponent <GameButton>().GetAppearTask();

            while (!BackButtonAppearTask.IsFinished)
            {
                BackButtonAppearTask.Update();
                yield return(null);
            }

            BackButton.GetComponent <BoxCollider2D>().enabled = true;
        }
    }