using MS; using UnityEngine; using UnityEngine.UI; using System.Collections.Generic; using System; /// /// Add list of achievements to screen /// public class AchievenmentListIngame : MonoBehaviour { public GameObject scrollContent; public GameObject prefab; public Popup Menu; public Dropdown Filter; public Text CountText; public Text CompleteText; public Scrollbar Scrollbar; private bool MenuOpen = false; [Tooltip("Key used to open UI menu. Set to \"None\" to prevent menu from opening with any key press")] // public KeyCode OpenMenuKey; //Key to open in-game menu /// /// Adds all achievements to the UI based on a filter /// /// Filter to use (All, Achieved or Unachieved) private void AddAchievements(string Filter) { foreach (Transform child in scrollContent.transform) { Destroy(child.gameObject); } AchievementManager AM = AchievementManager.instance; int AchievedCount = AM.GetAchievedCount(); if (CountText) CountText.text = "" + AchievedCount + " / " + AM.States.Count; if (CompleteText) CompleteText.text = "Complete (" + AM.GetAchievedPercentage() + "%)"; for (int i = 0; i < AM.AchievementList.Count; i++) { if ((Filter.Equals("All")) || (Filter.Equals("Achieved") && AM.States[i].Achieved) || (Filter.Equals("Unachieved") && !AM.States[i].Achieved)) { AddAchievementToUI(AM.AchievementList[i], AM.States[i]); } } Scrollbar.value = 1; } public List Stack; public void AddAchievementToUI(AchievementInfromation Achievement, AchievementState State) { UIAchievement UIAchievement = Instantiate(prefab, new Vector3(0f, 0f, 0f), Quaternion.identity).GetComponent(); Stack.Add(UIAchievement); UIAchievement.Set(Achievement, State); UIAchievement.transform.SetParent(scrollContent.transform); UIAchievement.GetComponent().localScale = Vector3.one; } /// /// Filter out a set of locked or unlocked achievements /// public void ChangeFilter() { AddAchievements(Filter.options[Filter.value].text); } /// /// Closes the UI window. /// void Start() { AddAchievements("All"); Invoke(nameof(Starter), 0.5f); } public void Starter() { if (AchievementManager.instance.achievementListIngame == null) { AchievementManager.instance.achievementListIngame = this; } } public void CloseWindow() { MenuOpen = false; Menu.Close(); } /// /// Opens the UI window. /// public void OpenWindow() { MenuOpen = true; Menu.Open(); Setter(); //AddAchievements("All"); } void Setter() { for (int i = 0; i < Stack.Count; i++) { if (PlayerPrefs.GetInt("UIAchievement" + i + "Claimable") == 1) { PlayerPrefs.SetInt("UIAchievement" + i + "Claimable", 0); Stack[i].ClaimButton.gameObject.SetActive(true); Stack[i].CompleteToClaimButton.SetActive(false); int numofCoinsToAdd = PlayerPrefs.GetInt("TotalCoinsForReward" + i); Stack[i].ClaimButton.onClick.RemoveAllListeners(); Stack[i].ClaimButton.onClick.AddListener(() => { AchievementManager.instance.AddCoins(numofCoinsToAdd); PlayerPrefs.SetInt("TotalCoinsForReward" + i, 0); }); } } } /// /// Toggles the state of the UI window open or closed /// public void ToggleWindow() { if (MenuOpen) { CloseWindow(); } else { OpenWindow(); } } // private void Update() // { // if(Input.GetKeyDown(OpenMenuKey)) // { // ToggleWindow(); // } // } }