using System.Collections; using System.Collections.Generic; using UnityEngine; using TMPro; using UnityEngine.UI; public class XpPass : MonoBehaviour { public TMP_Text nextLevelTxt; public float sliderWidthPerLevel = 450; public Slider levelSlider; [SerializeField] public XpPassReward[] rewards; public Sprite goldRewardIcon, gemRewardIcon, chestRewardIcon; public GameObject rewardCardPrefab; public GameObject xpLevelPointPrefab; public Sprite disabledXpPointIcon; public Transform xpLevelPointsParent, rewardCardsParent; void Start() { Refresh(); } public void Show(){ Refresh(); gameObject.SetActive(true); } public void Hide(){ gameObject.SetActive(false); } void Refresh(){ nextLevelTxt.text = (DBmanager.LevelInt +1).ToString(); //Sort Rewards by Level XpPassReward temp; for (int j = 0; j <= rewards.Length - 2; j++) { for (int i = 0; i <= rewards.Length - 2; i++) { if (rewards[i].level > rewards[i + 1].level) { temp= rewards[i + 1]; rewards[i + 1] = rewards[i]; rewards[i] = temp; } } } //Clear current items rewardCardPrefab.SetActive(false); xpLevelPointPrefab.SetActive(false); for(int i=0; i < xpLevelPointsParent.childCount;i++){ if(xpLevelPointsParent.GetChild(i)== xpLevelPointPrefab.transform){continue;} Destroy(xpLevelPointsParent.GetChild(i).gameObject); } for(int i=0; i < rewardCardsParent.childCount;i++){ if(rewardCardsParent.GetChild(i) == rewardCardPrefab.transform){continue;} Destroy(rewardCardsParent.GetChild(i).gameObject); } rewardCardPrefab.SetActive(true); xpLevelPointPrefab.SetActive(true); Instantiate(xpLevelPointPrefab, xpLevelPointsParent).GetComponentInChildren().text="1"; foreach(XpPassReward reward in rewards){ GameObject rewardCard = Instantiate(rewardCardPrefab, rewardCardsParent); GameObject xpLevelPoint = Instantiate(xpLevelPointPrefab, xpLevelPointsParent); xpLevelPoint.GetComponentInChildren().text = reward.level.ToString(); rewardCard.GetComponentInChildren().text = (reward.amount >=1000) ? reward.amount.ToString("0,000") : reward.amount.ToString(); switch(reward.rewardType){ case XpRewardType.Gold: rewardCard.transform.GetChild(1).GetComponent().sprite = goldRewardIcon; break; case XpRewardType.Gems: rewardCard.transform.GetChild(1).GetComponent().sprite = gemRewardIcon; break; case XpRewardType.Chest: rewardCard.transform.GetChild(1).GetComponent().sprite = chestRewardIcon; rewardCard.GetComponentInChildren().text = ""; break; } if(reward.level > DBmanager.Level){ xpLevelPoint.GetComponent().sprite = disabledXpPointIcon; rewardCard.GetComponent