Ejemplo n.º 1
0
    public void AnimateXpGain(ReadyCallback readyCallback)
    {
        xpReadyCallback = readyCallback;
        updateSpeed     = Configs.main.UI.XpBarUpdateSpeed;
        xpGained        = Resource.Value;
        levelsAtStart   = Resource.Level;
        currentLevel    = levelsAtStart;

        levelsGained = 0;
        XPContainer.SetActive(false);
        if (xpGained > 0)
        {
            BarContainer.SetActive(true);
            IconContainer.SetActive(true);
            LevelContainer.SetActive(true);
        }
        xpsPerLevel         = new List <int>();
        currentLevelXpBound = Resource.XpPerLevel;
        while (xpGained >= Resource.XpPerLevel)
        {
            levelsGained++;
            xpGained -= Resource.XpPerLevel;
            xpsPerLevel.Add(Resource.XpPerLevel);
            Resource.Level++;
        }

        SetCurrentTarget();
        StartCoroutine("GainXP");
    }
Ejemplo n.º 2
0
 private void GainLevel()
 {
     runningValue  = 0;
     currentLevel += 1;
     XPContainer.SetActive(false);
     SetCurrentTarget();
     UpdateView(0, runningValue, currentLevelXpBound, (currentLevel + 1).ToString());
     StartCoroutine("GainXP");
 }
Ejemplo n.º 3
0
 private IEnumerator GainXP()
 {
     while (runningValue < currentTarget)
     {
         runningValue += 1;
         float percentage = (runningValue / (currentLevelXpBound * 1.0f));
         UpdateView(percentage, runningValue, currentLevelXpBound, (currentLevel + 1).ToString());
         XPContainer.SetActive(false);
         yield return(StartCoroutine(Tools.WaitForRealTime(1.0f / currentLevelXpBound / updateSpeed)));
     }
     if (runningValue >= currentLevelXpBound)
     {
         GainLevel();
     }
     else
     {
         xpReadyCallback();
     }
 }