// 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(); }
/// <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); }