Esempio n. 1
0
    private void ResetNearMissCountOnLevelFailed()
    {
        string levelName = gameObject.scene.name;

        string[] levelIdentity       = levelName.Split('.');
        int      currentChapterIndex = int.Parse(levelIdentity[0]);
        int      currentLevelIndex   = int.Parse(levelIdentity[1]);

        PlayerStatistics.Level currentLevel = playerStats.chaptersList[currentChapterIndex].LevelsInChapter[currentLevelIndex];
        if (!currentLevel.IsPlayed)
        {
            currentLevel.numTimesLevelFailed += 1;
            currentLevel.numTimesNearMiss     = 0;
            playerStats.chaptersList[currentChapterIndex].LevelsInChapter[currentLevelIndex] = currentLevel;
        }
    }
Esempio n. 2
0
    private void UpdateAndUnlockNextLevel(int currentChapterIndex, int currentLevelIndex, float timeTaken)
    {
        playerStats.playerCoins += currentCoinsAcquired;
        PlayerStatistics.Level currentLevelObj = playerStats.chaptersList[currentChapterIndex].LevelsInChapter[currentLevelIndex];
        currentLevelObj.IsPlayed             = true;
        currentLevelObj.IsPlaying            = false;
        currentLevelObj.PersonalBestTime     = Mathf.Min(currentLevelObj.PersonalBestTime, timeTaken);
        currentLevelObj.CoinsInLevel         = coinsInScene;
        currentLevelObj.CoinsAcquiredInLevel = currentCoinsAcquired;
        playerStats.chaptersList[currentChapterIndex].LevelsInChapter[currentLevelIndex] = currentLevelObj;

        if (currentLevelIndex == playerStats.chaptersList[currentChapterIndex].LevelsInChapter.Count - 1)
        {
            if (currentChapterIndex == playerStats.chaptersList.Count - 1)
            {
            }
            else
            {
                PlayerStatistics.Chapter nextChapterObj = playerStats.chaptersList[currentChapterIndex + 1];
                nextChapterObj.IsLocked = false;
                playerStats.chaptersList[currentChapterIndex + 1] = nextChapterObj;
                PlayerStatistics.Level nextLevelObj = playerStats.chaptersList[currentChapterIndex + 1].LevelsInChapter[0];
                playerStats.highestChapter = PersistentInformation.CurrentChapter = currentChapterIndex + 1;
                playerStats.highestLevel   = 0;
                if (!nextLevelObj.IsPlayed)
                {
                    nextLevelObj.IsPlaying = true;
                }
                nextLevelObj.IsLocked = false;
                playerStats.chaptersList[currentChapterIndex + 1].LevelsInChapter[0] = nextLevelObj;
            }
        }
        else
        {
            PlayerStatistics.Level nextLevelObj = playerStats.chaptersList[currentChapterIndex].LevelsInChapter[currentLevelIndex + 1];
            nextLevelObj.IsPlaying = true;
            nextLevelObj.IsLocked  = false;
            playerStats.chaptersList[currentChapterIndex].LevelsInChapter[currentLevelIndex + 1] = nextLevelObj;
            playerStats.highestLevel = currentLevelIndex + 1;
        }
    }
Esempio n. 3
0
    // real time updation will be done by mainmenuhandler or levelcontroller
    // level needs to be completed for updating the task
    // after level complete levelTask will be completed fully or not at all
    // after level complete gameTask can be completed partially.
    public void UpdateLevelTaskState(ObjectsDescription objectType, TaskTypes taskType, TaskCategory taskCategory, List <string> metaData)
    {
        if (UpdateCameFromLevel() && !IsLevelEligibleToExecuteTask())
        {
            return;
        }

        bool objTypeMatchesFirstTask  = Array.Exists(firstTask.AssociatedWith, element => element == objectType);
        bool objTypeMatchesSecondTask = Array.Exists(secondTask.AssociatedWith, element => element == objectType);

        if (taskCategory == TaskCategory.CountingTask)
        {
            if (objTypeMatchesFirstTask && firstTask.CurrTaskType == taskType && firstTask.CurrTaskCategory == taskCategory)
            {
                if (firstTask.CurrentCount < firstTask.CountLimit)
                {
                    firstTask.CurrentCount += 1;
                }

                if (firstTask.CurrentCount == firstTask.CountLimit)
                {
                    firstTask.IsCompleted = true;
                }
            }

            if (objTypeMatchesSecondTask && secondTask.CurrTaskType == taskType && secondTask.CurrTaskCategory == taskCategory)
            {
                if (secondTask.CurrentCount < secondTask.CountLimit)
                {
                    secondTask.CurrentCount += 1;
                }

                if (secondTask.CurrentCount == secondTask.CountLimit)
                {
                    secondTask.IsCompleted = true;
                }
            }

            if (taskType == TaskTypes.NearMiss)
            {
                Debug.Log("Near miss registered...");
                PlayerStatistics.Level levelData = playerStats.chaptersList[currentChapterIndex].LevelsInChapter[currentLevelIndex];
                levelData.numTimesNearMiss += 1;
                playerStats.chaptersList[currentChapterIndex].LevelsInChapter[currentLevelIndex] = levelData;
            }
        }
        else if (taskCategory == TaskCategory.ImmediateActionTask)
        {
            if (taskType == TaskTypes.CollectAllCoinsInLevel)
            {
                if (objTypeMatchesFirstTask && firstTask.CurrTaskType == taskType && firstTask.CurrTaskCategory == taskCategory)
                {
                    if (int.Parse(metaData[0]) == int.Parse(metaData[1]))
                    {
                        firstTask.IsCompleted = true;
                    }
                }

                if (objTypeMatchesSecondTask && secondTask.CurrTaskType == taskType && secondTask.CurrTaskCategory == taskCategory)
                {
                    if (int.Parse(metaData[0]) == int.Parse(metaData[1]))
                    {
                        secondTask.IsCompleted = true;
                    }
                }
            }
            else if (taskType == TaskTypes.Hover || taskType == TaskTypes.NoHit)
            {
                if (objTypeMatchesFirstTask && firstTask.CurrTaskType == taskType && firstTask.CurrTaskCategory == taskCategory)
                {
                    firstTask.IsCompleted = bool.Parse(metaData[0]);
                }

                if (objTypeMatchesSecondTask && secondTask.CurrTaskType == taskType && secondTask.CurrTaskCategory == taskCategory)
                {
                    secondTask.IsCompleted = bool.Parse(metaData[0]);
                }
            }
            else if (taskType == TaskTypes.NoNearMiss)
            {
                if (objTypeMatchesFirstTask && firstTask.CurrTaskType == taskType && firstTask.CurrTaskCategory == taskCategory)
                {
                    firstTask.IsCompleted = (playerStats.chaptersList[currentChapterIndex].LevelsInChapter[currentLevelIndex].numTimesNearMiss == 0);
                }

                if (objTypeMatchesSecondTask && secondTask.CurrTaskType == taskType && secondTask.CurrTaskCategory == taskCategory)
                {
                    secondTask.IsCompleted = (playerStats.chaptersList[currentChapterIndex].LevelsInChapter[currentLevelIndex].numTimesNearMiss == 0);
                }
            }
            else if (taskType == TaskTypes.UpdateSkin)
            {
                if (objTypeMatchesFirstTask && firstTask.CurrTaskType == taskType && firstTask.CurrTaskCategory == taskCategory)
                {
                    firstTask.IsCompleted = (firstTask.CountLimit <= int.Parse(metaData[0]));
                }

                if (objTypeMatchesSecondTask && secondTask.CurrTaskType == taskType && secondTask.CurrTaskCategory == taskCategory)
                {
                    secondTask.IsCompleted = (secondTask.CountLimit <= int.Parse(metaData[0]));
                }
                FinalizeTasks();
            }
        }
    }
Esempio n. 4
0
 private bool IsLevelEligibleToExecuteTask()
 {
     PlayerStatistics.Level levelData = playerStats.chaptersList[currentChapterIndex].LevelsInChapter[currentLevelIndex];
     return(!levelData.IsPlayed);
 }