public virtual void InitAttr(T type, float val) { var index = BoxAvoidance <T> .ToInt(type); if (attrDataList != null) { TDAttrData tempAttrData = null; if (index >= attrDataList.Count) { CLog.Error("InitAttr:" + type.ToString() + ":没有配置属性表"); return; } tempAttrData = attrDataList[index]; if (tempAttrData == null) { _curDataPool[index] = val; _baseDataPool[index] = val; } else { _curDataPool[index] = Mathf.Clamp(val, tempAttrData.Min, tempAttrData.Max); _baseDataPool[index] = Mathf.Clamp(val, tempAttrData.Min, tempAttrData.Max); } } else { _curDataPool[index] = val; _baseDataPool[index] = val; } SetDirty(); }
/// <summary> /// 获得额外的加成 /// </summary> protected float GetExtraAddtion(AttrConvertData <T> data, float?customVal = null) { if (data == null) { return(0); } int fromIndex = BoxAvoidance <T> .ToInt(data.From); TDAttrData tempData = attrDataList[fromIndex]; var fromVal = _curDataPool[fromIndex]; if (customVal.HasValue) { fromVal = customVal.Value; } var toVal = 0.0f; var Step = data.Step; if (Step == 0) { CLog.Error("Step不能为0"); return(0.0f); } if (!data.IsReverse) { toVal = (fromVal / Step) * data.Faction; } else { toVal = ((tempData.Max - fromVal) / Step) * data.Faction; } return(Mathf.Clamp(toVal, data.Min, data.Max)); }
protected virtual void AddAttrVal(T type, float val) { var index = BoxAvoidance <T> .ToInt(type); if (attrDataList != null) { TDAttrData tempAttrData = null; if (index >= attrDataList.Count) { CLog.Error("SetAttrVal:" + type.ToString() + ":没有配置属性表"); return; } tempAttrData = attrDataList[index]; if (tempAttrData == null) { _curDataPool[index] += val; } else { _curDataPool[index] += val; _curDataPool[index] = Mathf.Clamp(_curDataPool[index], tempAttrData.Min, tempAttrData.Max); } } else { _curDataPool[index] += val; } }