示例#1
0
    public bool SplitRatioStrByAppendType(string sRatio, ratioAppendInfo ratioInfo)
    {
        string sSymbolsGroup = "+-*/";

        string[] sPartRatioStr;
        for (int i = 0; i < (int)EAppendValueType.EAVT_DIVIDED; ++i)
        {
            if (i >= sSymbolsGroup.Length)
            {
                continue;
            }

            char sSymbol = sSymbolsGroup[i];
            sPartRatioStr = sRatio.Split(sSymbol);
            if (sPartRatioStr.Length <= 1)
            {
                continue;
            }

            int.TryParse(sPartRatioStr[0], out ratioInfo.nRatio);
            int.TryParse(sPartRatioStr[1], out ratioInfo.nAddValue);
            ratioInfo.eAddType = (EAppendValueType)(i + 1);
            return(true);
        }

        return(false);
    }
示例#2
0
    // 特殊公式1 减伤公式
    public string getFormula1PropertyString(string key)
    {
        if (EntityFactory.MainHeroView == null || !_propertyRatio.ContainsKey(key))
        {
            return(null);
        }

        if (_propertyRatio[key].Count == 0)
        {
            return(null);
        }

        ratioAppendInfo ratioInfo = _propertyRatio[key][0];
        int             ratio     = ratioInfo.nRatio;

        _propertyRatio[key].RemoveAt(0);
        float value   = getEntityPropertyNum(key);
        int   ShowNum = (int)value * ratio / 100;

        ShowNum = DoCalculateAppendProperty(ShowNum, ratioInfo.eAddType, ratioInfo.nAddValue);

        float  fValue    = 100 - (float)10000 / (100 + ShowNum);
        string appendNum = fValue.ToString("0");

        return(appendNum);
    }
示例#3
0
    // 获得系数
    public void getRatio(string strText)
    {
        if (string.IsNullOrEmpty(strText))
        {
            return;
        }

        _propertyRatio.Clear();
        //分隔的长字符串
        string[] lPartStr = strText.Split(']');
        //分隔的中字符串
        string mPartStr;

        //分隔的短字符组
        string[] sPartStr;
        foreach (string s in lPartStr)
        {
            if (s.IndexOf('[') >= 0)
            {
                mPartStr = s.Substring(s.IndexOf('[') + 1);
                sPartStr = mPartStr.Split('=');
                string propertyType = sPartStr[0];

                // 拆分系数 附加值
                if (comparePropertyType(propertyType) == false)
                {
                    continue;
                }
                string sRatioStr = sPartStr[1];

                int ratio = 0;
                int.TryParse(sRatioStr, out ratio);
                ratioAppendInfo ratioInfo = new ratioAppendInfo();
                ratioInfo.nRatio = ratio;
                if (ratio <= 0)
                {
                    if (!SplitRatioStrByAppendType(sRatioStr, ratioInfo))
                    {
                        continue;
                    }
                }

                if (!_propertyRatio.ContainsKey(propertyType))
                {
                    _propertyRatio[propertyType] = new List <ratioAppendInfo>();
                }

                _propertyRatio[propertyType].Add(ratioInfo);
            }
            else
            {
                continue;
            }
        }
        return;
    }