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); }
// 特殊公式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); }
// 获得系数 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; }