void Enhance(AValueStruct pVS, AValueMask pMask, bool bLinear) // 将pStruct的属性数值强化给自己
        {
            if (null == pVS)
            {
                return;
            }
            if (null != pMask)
            {
                EnhanceWithMask(pVS, pMask, bLinear);
                return;
            }

            for (int i = 0; i < (int)AValueType.Count; i++)
            {
                AValueData pDstData = GetValueData(i, false);
                if (null != pDstData)
                {
                    // 如果装备属性项不存在,强化属性集无效果
                    AValueData pSrcData = pVS.GetValueData(i, false);
                    if (null != pSrcData)
                    {
                        pDstData.Combine(pSrcData, ref bLinear);
                    }
                }
            }
        }
        public AValueData GetValueData(int nValueID, bool bCreateNew)
        {
            if (nValueID < 0 || nValueID >= (int)AValueType.Count)
            {
                return(null);
            }

            if (!Datas.ContainsKey(nValueID))
            {
                if (bCreateNew)
                {
                    ConfigData info = XWorldGameModule.GetGameManager <AValueDefine>().GetAValueInfo(nValueID);
                    if (null == info)
                    {
                        return(null);
                    }
                    AValueData pData = new AValueData(info.GetInt("MaxDepth"));
                    Datas.Add(nValueID, pData);
                    return(pData);
                }
                else
                {
                    return(null);
                }
            }
            else
            {
                return(Datas[nValueID]);
            }
        }
        public void SetValueData(int nValueID, int nLevel, int nMode, float absoluteValue, float percentValue)
        {
            AValueData pData = GetValueData(nValueID, true);

            if (null != pData)
            {
                pData.AddupBaseValue(nLevel, absoluteValue);
                pData.AddupPercentValue(nLevel, nMode, percentValue);
            }
        }
 void CalculatePrivateValue()
 {
     for (int i = 0; i < (int)AValueType.Count; i++)
     {
         AValueData pData = GetValueData(i, false);
         if (null != pData)
         {
             pData.Calculate(true);
         }
     }
 }
        void CalculateOne(RoleAValue result, AValueMask pMask, int valueID, AValueData pData, RoleAValue pTransformAV)
        {
            float extraBase = null == pTransformAV ? 0.0f : pTransformAV.Values[valueID];

            if (null != pData)
            {
                result.Values[valueID] = pData.Calculate(false, extraBase);
            }
            else
            {
                result.Values[valueID] = extraBase;
            }
        }
 void CombineWithMask(AValueStruct pVS, AValueMask pMask, bool bLinear) // 将pStruct的属性数值合并给自己
 {
     foreach (KeyValuePair <int, AValueData> item in pVS.Datas)
     {
         if (pMask.Mask[item.Key])
         {
             AValueData pDstData = GetValueData(item.Key, true);
             if (null != pDstData)
             {
                 pDstData.Combine(item.Value, ref bLinear);
             }
         }
     }
 }
 void EnhanceWithMask(AValueStruct pVS, AValueMask pMask, bool bLinear)
 {
     for (int i = 0; i < (int)AValueType.Count; i++)
     {
         if (pMask.Mask[i])
         {// 标脏的数值才进行合并
             AValueData pDstData = GetValueData(i, false);
             if (null != pDstData)
             {// 如果装备属性项不存在,强化属性集无效果
                 AValueData pSrcData = pVS.GetValueData(i, false);
                 if (null != pSrcData)
                 {
                     pDstData.Combine(pSrcData, ref bLinear);
                 }
             }
         }
     }
 }
        public void Combine(AValueStruct pVS, AValueMask pMask, bool bLinear) // 将pStruct的属性数值合并给自己
        {
            if (null == pVS)
            {
                return;
            }

            if (null != pMask)
            {
                CombineWithMask(pVS, pMask, bLinear);
                return;
            }

            foreach (KeyValuePair <int, AValueData> item in pVS.Datas)
            {
                AValueData pDstData = GetValueData(item.Key, true);
                if (null != pDstData)
                {
                    pDstData.Combine(item.Value, ref bLinear);
                }
            }
        }