public void ApplyModifier(ResourceModifer mod)
    {
        switch (mod.type)
        {
        case StatModType.Flat:
            currentValue += mod.value;
            break;

        case StatModType.PercentAdd:
            currentValue += baseValue * mod.value;
            break;

        case StatModType.PercentMulti:
            currentValue *= 1 + mod.value;
            break;

        default:
            break;
        }

        if (currentValue >= baseValue)
        {
            currentValue = baseValue;
        }
    }
 public bool RemoveModifier(ResourceModifer mod)
 {
     if (resourceModifiers.Remove(mod))
     {
         this.isDirty = true;
         if (resourceModifiers.Count <= 0)
         {
             timer.Enabled = false;
         }
         return(true);
     }
     return(false);
 }
    private void OnTimeEvent(object source, ElapsedEventArgs e)
    {
        for (int i = 0; i < resourceModifiers.Count; i++)
        {
            ResourceModifer mod = resourceModifiers[i];

            if (TimeSpan.Compare(DateTime.Now - mod.lastActivated, mod.activation) >= 0)
            {
                ApplyModifier(mod);
            }

            if (TimeSpan.Compare(DateTime.Now - mod.started, mod.duration) >= 0)
            {
                RemoveModifier(mod);
            }
        }
    }
 public void AddModifier(ResourceModifer mod)
 {
     resourceModifiers.Add(mod);
     resourceModifiers.Sort(CompareModifierOrder);
     timer.Enabled = true;
 }