public void Apply() { binder = GetComponentInParent <UIDataBinder>(); experiencePoints = binder.GetExperiencePoints(); levelIndicator = levelIndicatorObject.GetComponent <LevelIndicator>(); levelIndicator.ApplyChanges(experiencePoints.level); controller.SetFill(experiencePoints.currentProgress); switch (controller.FillType) { case BarFillType.Static: binder.SaveExperience(); controller.SetFill(experiencePoints.currentProgress); controller.UpdateIndicator(experiencePoints.level); break; case BarFillType.Animated: if (experiencePoints.nextProgress != experiencePoints.currentProgress) { StartCoroutine(AnimateBar()); } break; default: throw new System.Exception("LevelBarController::Apply() called BarFillController::FillType and it returned null."); } }
public ExperiencePointsData GetExperiencePoints() { //Calculate new values ExperiencePointsData xp = new ExperiencePointsData { level = CalculateCurrentLevel(PlayerData.instance.GetPlayerXp()), currentProgress = CalculateProgress(PlayerData.instance.GetPlayerXp()), nextProgress = CalculateProgress(PlayerData.instance.GetPlayerXp() + PlayerData.instance.GetPlayerXpAfterLevel()), claimedExperiencePoints = PlayerData.instance.GetPlayerXpAfterLevel() }; return(xp); }
public void SaveExperience() { //Write to file PlayerData.instance.SetPlayerLevel(CalculateCurrentLevel(PlayerData.instance.GetPlayerXp())); PlayerData.instance.SetPlayerXp(PlayerData.instance.GetPlayerXp() + PlayerData.instance.GetPlayerXpAfterLevel()); PlayerData.instance.SetPlayerXpAfterLevel(0); PlayerData.instance.SavePlayer(); ExperiencePointsData write = new ExperiencePointsData { level = CalculateCurrentLevel(PlayerData.instance.GetPlayerXp()), currentProgress = CalculateProgress(PlayerData.instance.GetPlayerXp()), nextProgress = CalculateProgress(PlayerData.instance.GetPlayerXp() + PlayerData.instance.GetPlayerXpAfterLevel()), claimedExperiencePoints = PlayerData.instance.GetPlayerXpAfterLevel() }; }
private IEnumerator AnimateBar() { //Wait half seconds yield return(new WaitForSeconds(0.5f)); //Start XP Text Animation controller.SetXPText(experiencePoints.claimedExperiencePoints); //Set Next Data binder.SaveExperience(); //Update XP Cache experiencePoints = binder.GetExperiencePoints(); //Wait half seconds yield return(new WaitForSeconds(0.5f)); //Call Animation StartCoroutine(controller.AnimateFill(experiencePoints.currentProgress)); }