Пример #1
0
    public void RecieveExp(int gemType, int amount)
    {
        if (gemType < experienceInstance.Length)
        {
            Debug.Log("Recieved exp: " + amount);
            StatGameInstance.AddInt(experienceInstance[gemType], amount);
            currentExp += amount;
        }
        else
        {
            Debug.Log("EXP ERROR: out of range." + gemType + " " + experienceInstance.Length, this);
        }

        if (experienceInstance[gemType].GetInt() >= maxExpForThisLevel)
        {
            currentLevel++;
            Debug.Log("Level up! to level " + currentLevel);

            // Add leftover exp to new level.
            int expLeft = experienceInstance[gemType].GetInt() - maxExpForThisLevel;
            experienceInstance[gemType].SetInt(expLeft);
            currentExp = expLeft;

            // Calcualte what the new exprience required for new level is.
            float percentage = (float)currentLevel / (float)maxLevelX;
            //float sample = expLimit.Evaluate(percentage);
            float sample = expIncreasePercentage.Evaluate(percentage);
            //float multiplier = Mathf.Max((int)(sample * maxGlobalExpLimit), 1);
            float multiplier = 1;
            int   newMaxExp  = (int)(maxExpForThisLevel * (1 + sample));
            maxExpForThisLevel = newMaxExp;
            Debug.Log("percentage : " + percentage + "curve result: " + sample + " multiplier: " + multiplier + " -> " + newMaxExp);
        }
    }
Пример #2
0
    protected void Awake()
    {
        instance = this;

        // init new
        gemPlayerExp.Init();

        // init old
        experienceInstance = new StatGameInstance[gemExperienceData.Length];
        for (int i = 0; i < gemExperienceData.Length; i++)
        {
            experienceInstance[i] = new StatGameInstance(gemExperienceData[i]);
        }
    }
Пример #3
0
 internal static void AddInt(StatGameInstance stat, int amount)
 {
     stat.num += amount;
 }