Beispiel #1
0
    protected float CalculateFinalStatValue()
    {
        float finalValue    = BaseValue;
        float sumPercentAdd = 0;

        for (int i = 0; i < statModifiers.Count; i++)
        {
            scrUnitStatModifiersTutorial mod = statModifiers[i];

            if (mod.ModifierType == StatModType.Flat)
            {
                finalValue += mod.ModifierValue;
            }
            else if (mod.ModifierType == StatModType.PercentAdd)
            {
                sumPercentAdd += mod.ModifierValue;

                if (i + 1 > statModifiers.Count || statModifiers[i + 1].ModifierType != StatModType.PercentAdd)
                {
                    finalValue   *= sumPercentAdd;
                    sumPercentAdd = 0;
                }
            }
            else if (mod.ModifierType == StatModType.PercentMult)
            {
                finalValue *= 1 + mod.ModifierValue;
            }
        }

        return((float)Math.Round(finalValue, 4));
    }
Beispiel #2
0
 public bool RemoveModifier(scrUnitStatModifiersTutorial modifier)
 {
     if (statModifiers.Remove(modifier))
     {
         isDirty = true;
         return(true);
     }
     return(false);
 }
Beispiel #3
0
 protected int CompareModifierOrder(scrUnitStatModifiersTutorial a, scrUnitStatModifiersTutorial b)
 {
     if (a.ModifierOrder < b.ModifierOrder)
     {
         return(-1);
     }
     else if (a.ModifierOrder > b.ModifierOrder)
     {
         return(1);
     }
     return(0); //if (a.ModifierOrder == b.ModifierOrder)
 }
Beispiel #4
0
 public void AddModifier(scrUnitStatModifiersTutorial modifier)
 {
     isDirty = true;
     statModifiers.Add(modifier);
     statModifiers.Sort(CompareModifierOrder);
 }