Example #1
0
        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();
        }
Example #2
0
        /// <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));
        }
Example #3
0
        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;
            }
        }