Esempio n. 1
0
    public void ButtonSelected(NumberedLevelSelectButton button)
    {
        MMVibrationManager.Haptic(HapticTypes.Selection);
        if (LevelSelectOpen)
        {
            int buildIndex = SceneHelpers.GetBuildIndexFromLevel(WorldSelected, button.TempNumber.HasValue ? button.TempNumber.Value : button.Number);
            MusicManager.Instance.SlideVolume(0.4f, 1f);
            GameManager.Instance.LoadScene(buildIndex, null);
        }
        else
        {
            if (button.Paywalled)
            {
                Debug.Log($"TAKE ME TO THE STORE TO BUY WORLD {button.Number}!");
            }
            else
            {
                levelData = GameManager.Instance.SaveData.LevelData;
                CopyManager.OnLevelChange(button.Number);

                (this.MirroredComponent as LevelSelect).OnLevelSelectNoAction(button.MirroredComponent as NumberedLevelSelectButton);
                OnLevelSelectNoAction(button);

                // tell camera to wipe
                // world one and no world share the same style
                if (WorldSelected > 1)
                {
                    StartCoroutine(CameraWipe(0));
                }
            }
        }
    }
Esempio n. 2
0
    public void OnLevelSelectNoAction(NumberedLevelSelectButton button)
    {
        WorldSelected = button.Number;

        // move button to S position
        // if the world is complete, allow it to be clickable to display world complete info
        button.SetSlidePosition(
            WorldSelectedTilePosition,
            SelectedWorldComplete,
            SwitchToWorldCompleteScene
            );

        // move all other buttons to their position
        foreach (NumberedLevelSelectButton b in NumberedLevelButtons)
        {
            if (b != button)
            {
                b.SetHidden(true, () => {
                    SetLevelSelectButton(b);
                    b.SetHidden(false, null);
                    Back.SetHidden(false, null);
                });
            }
        }
    }
Esempio n. 3
0
    void Awake()
    {
        WorldSelectedTilePosition = new Vector2(0f, 3f * tileWidth - 1);
        WorldPositions            = new[] {
            new Vector2(-2f * tileWidth, 2f * tileWidth - 1),
            new Vector2(0f * tileWidth, 2f * tileWidth - 1),
            new Vector2(2f * tileWidth, 2f * tileWidth - 1),
            new Vector2(-2f * tileWidth, 0f * tileWidth - 1),
            new Vector2(0f * tileWidth, 0f * tileWidth - 1),
            new Vector2(2f * tileWidth, 0f * tileWidth - 1),
            new Vector2(-2f * tileWidth, -2f * tileWidth - 1),
            new Vector2(0f * tileWidth, -2f * tileWidth - 1),
            new Vector2(2f * tileWidth, -2f * tileWidth - 1),
            new Vector2(-2f * tileWidth, -4f * tileWidth - 1),
            new Vector2(0f * tileWidth, -4f * tileWidth - 1),
            new Vector2(2f * tileWidth, -4f * tileWidth - 1)
        };
        LevelPositions = new [] {
            new Vector2(2f * tileWidth, 2f * tileWidth - 1),
            new Vector2(-2f * tileWidth, 0f * tileWidth - 1),
            new Vector2(0f * tileWidth, 0f * tileWidth - 1),
            new Vector2(2f * tileWidth, 0f * tileWidth - 1),
            new Vector2(-2f * tileWidth, -2f * tileWidth - 1),
            new Vector2(0f * tileWidth, -2f * tileWidth - 1),
            new Vector2(2f * tileWidth, -2f * tileWidth - 1),
            new Vector2(-2f * tileWidth, -4f * tileWidth - 1),
            new Vector2(0f * tileWidth, -4f * tileWidth - 1),
            new Vector2(2f * tileWidth, -4f * tileWidth - 1),
            //garbage
            Vector2.zero,
            Vector2.zero
        };

        int highest = GameManager.Instance.HighestUnlockedLevel;

        SceneHelpers.GetWorldAndLevelFromBuildIndex(highest, out highestUnlockedWorld, out highestUnlockedLevel);

        levelData            = GameManager.Instance.SaveData.LevelData;
        NumberedLevelButtons = GetComponentsInChildren <NumberedLevelSelectButton>().ToArray();        // 1 - 12
        for (int i = 0; i < NumberedLevelButtons.Length; i++)
        {
            NumberedLevelSelectButton b = NumberedLevelButtons[i];
            b.Init(i + 1);
            SetLevelSelectButton(b);
            b.TryEnableInteractable();
        }
        Back.Init();

        if (LevelSelectOpen)
        {
            NumberedLevelSelectButton b = NumberedLevelButtons[WorldSelected - 1];
            SetLevelSelectButton(b);
            if (SelectedWorldComplete)
            {
                b.Interactable = true;
                b.SetOnClick(SwitchToWorldCompleteScene);
            }
            else
            {
                b.Interactable = false;
            }
            Back.transform.localScale = Vector3.one;
        }
        else
        {
            Back.SetHidden(true, null, true);
        }
    }
Esempio n. 4
0
    public void SetLevelSelectButton(NumberedLevelSelectButton b)
    {
        if (LevelSelectOpen)
        {
            b.SetPaywalled(false);
            if (b.Number != WorldSelected)
            {
                bool worldFullyUnlocked = WorldSelected < highestUnlockedWorld;

                // what is usually #12 is used as a flex tile to fill the spot of the world selected
                if (b.Number == 12)
                {
                    if (WorldSelected < 11)
                    {
                        int stars = levelData[WorldSelected - 1, WorldSelected - 1].MaxStarsCollected;
                        b.SetStayHidden(false);
                        b.SetButtonInfo(LevelSelectPosition(WorldSelected), WorldSelected, worldFullyUnlocked || WorldSelected <= highestUnlockedLevel, false, stars);
                    }
                    else
                    {
                        // only 10 levels, don't need to show if level 11 is selected
                        b.SetStayHidden(true);
                    }
                }
                else if (b.Number == 11)
                {
                    // since 12 is flexing, 11 is never needed in level select
                    b.SetStayHidden(true);
                }
                else
                {
                    int stars = levelData[WorldSelected - 1, b.Number - 1].MaxStarsCollected;
                    b.SetStayHidden(false);
                    b.SetButtonInfo(LevelSelectPosition(b.Number), b.Number, worldFullyUnlocked || b.Number <= highestUnlockedLevel, false, stars);
                }
            }
            else
            {
                int len      = levelData.GetLength(1);
                int minStars = 4;
                for (int i = 0; i < len; i++)
                {
                    minStars = Mathf.Min(minStars, levelData[b.Number - 1, i].MaxStarsCollected);
                }
                b.SetButtonInfo(WorldSelectedTilePosition, WorldSelected, true, false, minStars);
            }
        }
        else
        {
            int len      = levelData.GetLength(1);
            int minStars = 4;
            for (int i = 0; i < len; i++)
            {
                minStars = Mathf.Min(minStars, levelData[b.Number - 1, i].MaxStarsCollected);
            }

            bool hidden = b.Number > GameManager.ShownWorlds;
            b.SetStayHidden(hidden);

            int highestUnlockedAndAvailable = Mathf.Min(highestUnlockedWorld, GameManager.AvailableWorlds);

            if (!hidden)
            {
                b.SetButtonInfo(
                    position:       WorldSelectPosition(b.Number),
                    num:            b.Number,
                    unlocked:       b.Number <= highestUnlockedAndAvailable,
                    paywalled:      false,
                    stars: minStars
                    );
            }
        }
    }