/// <summary> /// <see cref="IAttrModifierTaker.TakeModifier(float, EAttrType, EAttrModifierLayer, bool)"/> /// </summary> /// <param name="layer"></param> /// <param name="type"></param> /// <param name="value"></param> /// <param name="isRefresh"></param> public void TakeModifier(float value, EAttrType type, EAttrModifierLayer layer, bool isRefresh = true) { attributes[(int)type].TakeModifier(value, type, layer, isRefresh); if (isRefresh) { RecalculateAttr(type); } }
/// <summary> /// Remove a modifier from this attribute. /// </summary> /// <param name="attrType"></param> /// <param name="layer"></param> /// <param name="value"></param> public void RemoveModifier(float value, EAttrType type, EAttrModifierLayer layer, bool isRefresh = true) { // keep track of independent if (layer == (int)EAttrModifierLayer.Independent) { independents.Remove(value); } else { modifiers[(int)layer] -= value; } // set dirty isModDirty = true; // recalculate attribute if (isRefresh) { Recalculate(false); } }
/// <summary> /// <see cref="IAttrModifierTaker.RemoveModifier(float, EAttrType, EAttrModifierLayer, bool)"/> /// </summary> /// <param name="layer"></param> /// <param name="type"></param> /// <param name="value"></param> /// <param name="isRefresh"></param> public void RemoveModifier(float value, EAttrType type, EAttrModifierLayer layer, bool isRefresh = true) { attributes[(int)type].RemoveModifier(value, type, layer, isRefresh); }