private FormulaMode GetFormulaMode() { FormulaMode retVal = FormulaMode.Normal; if (intAttrControl1.Visible && mPercentCheckbox.Checked) { retVal = FormulaMode.Percent; } //else if (mIncreaseYearsPro) // retVal = FormulaMode.Increment; return(retVal); }
// (<formula>,<targetAttribute>, <targetValue>, [positions],<mode>) /// <summary> /// Expects input like /// ApplyFormula('true','RightGlove','None', [QB]) /// ApplyFormula('RightGlove <> None','RightGlove','None', [QB]) /// ApplyFormula('Speed > 0','RightGlove','None', [QB]) /// ApplyFormula('Speed > 80','RightGlove','None', [QB]) /// ApplyFormula('Speed > 80','Stamina','95', [QB], Percent) /// </summary> /// <param name="line"></param> private void ApplyFormula(string line) { int index = line.IndexOf("(") + 1; int endPos = line.IndexOf(']') + 1; if (index != 0 && endPos != 0) { FormulaMode fm = FormulaMode.Normal; string argString = line.Substring(index).Replace(")", ""); // get rid of last paren too. string[] args = argString.Split(new char[] { ',' }); // need 6 args string formula = args[0].Trim("' ".ToCharArray()); string attr = args[1].Trim("' ".ToCharArray()); string val = args[2].Trim("' ".ToCharArray()); List <string> positions = GetFormulaPositions(line); if (line.ToLower().Contains("add")) { fm = FormulaMode.Percent; } else if (line.ToLower().Contains("increment")) { fm = FormulaMode.Add; } string results = Tool.ApplyFormula(formula, attr, val, positions, fm, true); string message = ""; if (results == null) { message = String.Format("Warning. No players selected by formula:\n\t\"{0}\"", line); } else if (results.StartsWith("Exception!")) { message = "Error, Check formula\n" + results; } else { message = "#Affected Players\n" + results; } Console.WriteLine(message); } }