public void RemoveModificator(BaseModificator modificator) { modificators.Remove(modificator); if (modificator.Type == ModificatorType.Multiplaer) { FinalValue /= modificator.Value; TimeModificator temp = (TimeModificator)modificator; if (temp != null && temp.IsMax) { maxValue /= modificator.Value; } } if (modificator is TimeModificator) { (modificator as TimeModificator).OnTimeEnd -= OnEnd; } if (modificator is TimeChangeModificator) { (modificator as TimeChangeModificator).OnValueChange -= ValueChange; } if (OnRemoveModificator != null) { OnRemoveModificator(modificator); } }
public void AddModificator(BaseModificator modificator) { if (modificator is TimeModificator) { (modificator as TimeModificator).OnTimeEnd += OnEnd; (modificator as TimeModificator).Start(); } if (modificator is TimeChangeModificator) { (modificator as TimeChangeModificator).OnValueChange += ValueChange; } if (modificator.Type == ModificatorType.Multiplaer) { TimeModificator temp = (TimeModificator)modificator; if (temp != null && temp.IsMax) { maxValue *= modificator.Value; } FinalValue *= modificator.Value; } if (modificator.GetType() != typeof(BaseModificator)) { modificators.Add(modificator); if (OnAddModificator != null) { OnAddModificator(modificator); } } else { if (modificator.Type == ModificatorType.Additive) { FinalValue += modificator.Value; } } }