Example #1
0
    void LoadLvl(LoadLevelType loadLvlType)
    {
        HideQuickGameMenu(0);

        if (currentLvl != null)
        {
            Destroy(currentLvl.gameObject);
        }
        if (loadLvlType == LoadLevelType.nextLvl)
        {
            lvlIndex++;
        }
        else if (loadLvlType == LoadLevelType.fromPlayerProfile)
        {
            lvlIndex = PlayerProfile.levelIndex;
        }

        if (lvlList.levels.Length < lvlIndex + 1)
        {
            SceneManager.LoadScene(0);
        }

        currentLvl = Instantiate(lvlList.levels[lvlIndex]);
        lvlComplitedObject.SetActive(false);
        lvlLostObject.SetActive(false);
        forceButton.SetActive(true);
        Debug.Log("Target: " + currentLvl.targetOfShoots);
        OnLvlLoaded.Invoke(currentLvl, lvlIndex);
    }
Example #2
0
 public override void Reset()
 {
     levelName     = new ConcreteStringVar();
     levelIndex    = new ConcreteIntVar();
     loadLevelType = LoadLevelType.LoadLevel;
 }
Example #3
0
 public override void Reset () {
     levelName = new ConcreteStringVar();
     levelIndex = new ConcreteIntVar();
     loadLevelType = LoadLevelType.LoadLevel;
 }
Example #4
0
 public CallLoadLevel(LoadLevelType type, int num, GameObject levelbutton = null)
 {
     Type  = type;
     index = num;
     SelectedLevelButton = levelbutton;
 }
Example #5
0
 public override void Reset()
 {
     loadLevelType = LoadLevelType.LoadLevel;
 }
Example #6
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;
        }
    }
Example #7
0
 public override void Reset () {
     loadLevelType = LoadLevelType.LoadLevel;
 }