using UnityEngine; using System.Collections; using UnityEngine.UI; public class ExperienceBar : MonoBehaviour { //Playerdata -- Needs saved public int currentLevel = 1; public float currentExp = 0; public float currentRequirement = 100; [SerializeField] private GameObject currentLevelText; [SerializeField] private float fillAmount; [SerializeField] private Image expBarSprite; [SerializeField] private float lerpSpeed; [SerializeField] private int clicks; [SerializeField] private GameObject eventSystem; private float clicksNeeded = 10; private float previousExpRequired; private float barMovement; private float barPosition; [SerializeField] public float expIncrement = 10.0f; private string notify; // Use this for initialization void Start () { eventSystem = GameObject.Find("EventSystem"); fillAmount = currentExp / currentRequirement; } // Update is called once per frame void Update () { fillAmount = currentExp / currentRequirement; this.gameObject.GetComponentInChildren().text = (int)currentExp + " / " + (int)currentRequirement; if (currentLevelText.GetComponent().text != currentLevel.ToString()){ currentLevelText.GetComponent().text = currentLevel.ToString(); } if (fillAmount != expBarSprite.fillAmount) { expBarSprite.fillAmount = Mathf.Lerp(expBarSprite.fillAmount, fillAmount, Time.deltaTime * lerpSpeed); } //Check if Exp bar is full if (expBarSprite.fillAmount >= 1.0f) { LevelUp(); clicksNeeded = (currentRequirement - currentExp) / expIncrement; fillAmount = 0; } } public void ExpMore() { ++clicks; currentExp = currentExp + expIncrement; fillAmount = currentExp / currentRequirement; notify = "+" + expIncrement + "EXP"; eventSystem.GetComponent().RewardPopup(expIncrement, 1); //Debug.Log("fillAmount = " + fillAmount); } public void LevelUp() { ++currentLevel; expIncrement += 10; currentLevelText.GetComponent().text = currentLevel.ToString(); previousExpRequired = currentRequirement; currentExp -= previousExpRequired; currentRequirement = Mathf.Pow(currentRequirement, 1.05f); GameObject.FindGameObjectWithTag("Player").GetComponent().RaiseRotationSpeed(); notify = "Level " + currentLevel + "!"; eventSystem.GetComponent().RewardPopup(currentLevel, 2); } public void ResetExp() { currentLevel = 1; currentLevelText.GetComponent().text = currentLevel.ToString(); currentExp = 0; fillAmount = 0; expIncrement = 10.0f; currentRequirement = 100; clicksNeeded = 10; clicks = 0; notify = "EXP Reset"; eventSystem.GetComponent().MakeStringPopup(notify, 1); } public void ExpLess() { --clicks; currentExp = currentExp - expIncrement; fillAmount = (currentExp / currentRequirement); Debug.Log("fillAmount = " + fillAmount); notify = "-" + expIncrement + "EXP"; eventSystem.GetComponent().RewardPopup(-expIncrement, 1); } public float GetExperience() { float currentExp; currentExp = this.currentExp; return currentExp; } }