示例#1
0
    // Start is called before the first frame update
    void Start()
    {
        info = PlayerInfoScript.instance;

        if (info == null)
        {
            Debug.LogError("PlayerInfoScript not found");
        }

        //Update the achievement list and get the index of completion
        int levelIndex = UpdateAchievements(info.GetLevelAchievementIndex(), info.GetLevel(), _levelAchievements, 0);
        int killIndex  = UpdateAchievements(info.GetKillAchievementIndex(), info.GetTotalKills(), _killAchivements, 1);

        _achievementScroller.GetComponent <ScrollRect>().verticalNormalizedPosition = 1; //Automatically scroll to the top

        //If the game hasn't be loaded before, then set the achievement index for each achievement.
        if (!info.HasAchievementBeenLoaded())
        {
            info.SetAchievementLevel(levelIndex);
            info.SetAchievementKillLevel(killIndex);
        }

        //Update the UI for coins and the xp bar
        _levelUIManager.UpdateUIStats();
        OrderAchievements();
    }
示例#2
0
    /// <summary>
    /// This functon is used to update the achievement list. Upon completion, the text will turn green
    /// and the achievement will be placed in the completed list.
    /// </summary>
    /// <param name="completedIndex"></param>
    /// <param name="value"></param>
    /// <param name="achievement"></param>
    /// <param name="key"></param>
    /// <returns></returns>
    private int UpdateAchievements(int completedIndex, int value, List <Achieve> achievement, int key = 0)
    {
        int xpToAdd = 0;
        int index   = 0;

        for (int i = 0; i < achievement.Count; i++)
        {
            //If a UI element hasnt been made for the achievement, then create onne
            if (achievement[i]._UIElement == null)
            {
                GameObject achieve = Instantiate(_achievementPrefab, _achievementScroller.transform.GetChild(0));
                achievement[i]._UIElement = achieve;
                if (achievement[i].isHidden)
                {
                    achieve.GetComponent <TextMeshProUGUI>().text = " HIDDEN";
                }
                else
                {
                    achieve.GetComponent <TextMeshProUGUI>().text = " " + achievement[i].wording;
                }
            }


            //If the value is create than the achievement value, then set this achievement as complete
            if (value >= achievement[i]._value)
            {
                _completed.Add(achievement[i]);

                if (index > completedIndex - 1)
                {
                    print(achievement[i].wording);
                    info.AddCoins(achievement[i]._coinReward);
                    xpToAdd += achievement[i]._xpReward;
                }

                achievement[i]._UIElement.GetComponent <TextMeshProUGUI>().color = Color.green;
                achievement.RemoveAt(i);
                i--;
                index++;
            }
        }

        //If an achievement has been made and you need the rewards, gain the rewards and make sure that another achievement hasn't been achieved
        if (xpToAdd > 0)
        {
            info.AddXp(xpToAdd);
            switch (key)
            {
            case 0:
                break;

            case 1:
                UpdateAchievements(info.GetKillAchievementIndex(), info.GetTotalKills(), _killAchivements, 1);
                break;

            default:
                Debug.Log("KEY NOT FOUND");
                break;
            }
            ;
            UpdateAchievements(info.GetLevelAchievementIndex(), info.GetLevel(), _levelAchievements, 0);
        }
        return(index);
    }