1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| public class AttributeBase { public readonly string Name; public readonly string SetName; public readonly string ShortName; protected event Action<AttributeBase, float, float> _onPostCurrentValueChange; protected event Action<AttributeBase, float, float> _onPostBaseValueChange; protected event Action<AttributeBase, float> _onPreCurrentValueChange; protected event Func<AttributeBase, float, float> _onPreBaseValueChange; protected IEnumerable<Func<AttributeBase, float, float>> _preBaseValueChangeListeners;
private AttributeValue _value; public AttributeValue Value => _value; public float BaseValue => _value.BaseValue; public float CurrentValue => _value.CurrentValue; public float MinValue => _value.MinValue; public float MaxValue => _value.MaxValue; public CalculateMode CalculateMode => _value.CalculateMode; public SupportedOperation SupportedOperation => _value.SupportedOperation;
private AbilitySystemComponent _owner; public AbilitySystemComponent Owner => _owner;
public AttributeBase(string attrSetName, string attrName, float value = 0, CalculateMode calculateMode = CalculateMode.Stacking, SupportedOperation supportedOperation = SupportedOperation.All, float minValue = float.MinValue, float maxValue = float.MaxValue);
public void SetCurrentValue(float value); public void SetCurrentValueWithoutEvent(float value); public void SetBaseValue(float value); public void SetBaseValueWithoutEvent(float value);
public void RegisterPreBaseValueChange(Func<AttributeBase, float, float> func); public void RegisterPostBaseValueChange(Action<AttributeBase, float, float> action); public void RegisterPreCurrentValueChange(Action<AttributeBase, float> action); public void RegisterPostCurrentValueChange(Action<AttributeBase, float, float> action); public void UnregisterPreBaseValueChange(Func<AttributeBase, float, float> func); public void UnregisterPostBaseValueChange(Action<AttributeBase, float, float> action); public void UnregisterPreCurrentValueChange(Action<AttributeBase, float> action); public void UnregisterPostCurrentValueChange(Action<AttributeBase, float, float> action);
}
|