Exemple #1
0
    public void PlayerWin(GoalFlag gf)
    {
        goalFlag = gf;
        Won      = true;

        Grid?.PlayerWon();

        int bi = SceneHelpers.GetCurrentLevelBuildIndex();

        SceneHelpers.GetWorldAndLevelFromBuildIndex(bi, out int world, out int level);

        // don't save data for tutorial levels
        if (world > 0 && level > 0)
        {
            timeInfo      = new TimeInfo();
            timeInfo.Time = ElapsedTime;

            LevelData[,] allLevelData = GameManager.Instance.SaveData.LevelData;
            LevelData ld = allLevelData[world - 1, level - 1];
            if (collectedStars > ld.MaxStarsCollected)
            {
                ld.MaxStarsCollected = collectedStars;
            }
            if (collectedStars >= 3)
            {
                if (ld.ThreeStarCompletionTime < 0 || ElapsedTime < ld.ThreeStarCompletionTime)
                {
                    ld.ThreeStarCompletionTime = ElapsedTime;
                    timeInfo.Record            = true;

                    // check for 3 star achievement, otherwise player would need
                    //  to visit world complete screen to get credit for 3 starring all levels
                    bool allThreeStar = true;
                    for (int i = 0; i < 10; i++)
                    {
                        LevelData other = allLevelData[world - 1, i];
                        if (other.MaxStarsCollected < 3)
                        {
                            allThreeStar = false;
                        }
                    }
                    if (allThreeStar)
                    {
                        GameManager.Instance.StoreCommunicator.AddAchievement($"World{world}AllStars");
                    }
                }
            }
            if (ld.AnyStarCompletionTime < 0 || ElapsedTime < ld.AnyStarCompletionTime)
            {
                ld.AnyStarCompletionTime = ElapsedTime;
                timeInfo.Record          = true;
            }
        }

        GameManager.Instance.SaveLevelCompleteData(bi + 1);
    }
Exemple #2
0
 public void OnShowComplete()
 {
     var(world, level) = SceneHelpers.GetWorldAndLevelFromBuildIndex(SceneHelpers.GetCurrentLevelBuildIndex());
     if (anim.GetFloat("direction") > 0)
     {
         foreach (var c in ConditionalPopups)
         {
             c.gameObject.SetActive(c.ShouldShow(world, level));
         }
     }
 }
Exemple #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);
        }
    }