private static ValData Calculate(ValData a, Calc.Formula1 f1, ValData b) { ValData valData = a; switch (f1) { case Calc.Formula1.Equal: valData = b; break; case Calc.Formula1.PlusEqual: valData += b; break; case Calc.Formula1.MinusEqual: valData -= b; break; case Calc.Formula1.AstaEqual: valData *= b; break; case Calc.Formula1.SlashEqual: valData /= b; break; } return(valData); }
private void DBTEST(ValData answerVal) { Dictionary <string, ValData> Vars = this.scenario.Vars; ValData dbOutputVal = answerVal; List <string> stringList1 = new List <string>(); ValData valData1; Func <string, ValData> func1 = (Func <string, ValData>)(s => Vars.TryGetValue(s, out valData1) ? new ValData(valData1.o) : new ValData(dbOutputVal.Convert((object)s))); int num1 = 0; Func <string, ValData> func2 = func1; List <string> argsList1 = this.argsList; int index1 = num1; int num2 = index1 + 1; string str1 = argsList1[index1]; ValData valData2 = func2(str1); stringList1.Add(valData2.o.ToString()); while (num2 < this.argsList.Count) { List <string> argsList2 = this.argsList; int index2 = num2; int num3 = index2 + 1; Calc.Formula2 formula2 = (Calc.Formula2) int.Parse(argsList2[index2]); Func <string, ValData> func3 = func1; List <string> argsList3 = this.argsList; int index3 = num3; num2 = index3 + 1; string str2 = argsList3[index3]; ValData b = func3(str2); stringList1.Add(Calc.Cast(formula2)); stringList1.Add(b.o.ToString()); valData2 = Calc.Calculate(valData2, Calc.Formula2to1(formula2), b); } dbOutputVal = Calc.Calculate(dbOutputVal, (Calc.Formula1) int.Parse(this.arg1), valData2); Calc.Formula1 formula = (Calc.Formula1) int.Parse(this.arg1); int num4 = 0; if (formula != Calc.Formula1.Equal) { stringList1.Insert(num4++, answerVal.o.ToString()); } List <string> stringList2 = stringList1; int index4 = num4; int num5 = index4 + 1; string str3 = Calc.Cast(formula); stringList2.Insert(index4, str3); Debug.LogFormat("answer:{0}\n{1}", new object[2] { dbOutputVal.o, (object)string.Join(" ", stringList1.ToArray()) }); }
public static string Cast(Calc.Formula1 formula) { switch (formula) { case Calc.Formula1.Equal: return("="); case Calc.Formula1.PlusEqual: return("+="); case Calc.Formula1.MinusEqual: return("-="); case Calc.Formula1.AstaEqual: return("*="); case Calc.Formula1.SlashEqual: return("/="); default: return(string.Empty); } }
private static ValData Calculate(Calc.Formula1 numerical, object a, object b) { switch (a) { case int num3: int num1 = (int)ValData.Cast(b, typeof(int)); switch (numerical) { case Calc.Formula1.PlusEqual: return(new ValData((object)(num3 + num1))); case Calc.Formula1.MinusEqual: return(new ValData((object)(num3 - num1))); case Calc.Formula1.AstaEqual: return(new ValData((object)(num3 * num1))); case Calc.Formula1.SlashEqual: return(new ValData((object)(num3 / num1))); } break; case float num3: float num2 = (float)ValData.Cast(b, typeof(float)); switch (numerical) { case Calc.Formula1.PlusEqual: return(new ValData((object)(float)((double)num3 + (double)num2))); case Calc.Formula1.MinusEqual: return(new ValData((object)(float)((double)num3 - (double)num2))); case Calc.Formula1.AstaEqual: return(new ValData((object)(float)((double)num3 * (double)num2))); case Calc.Formula1.SlashEqual: return(new ValData((object)(float)((double)num3 / (double)num2))); } break; case bool flag2: bool flag1 = (bool)ValData.Cast(b, typeof(bool)); switch (numerical) { case Calc.Formula1.PlusEqual: return(new ValData((object)((!flag2 ? 0 : 1) + (!flag1 ? 0 : 1) > 0))); case Calc.Formula1.MinusEqual: return(new ValData((object)((!flag2 ? 0 : 1) - (!flag1 ? 0 : 1) > 0))); case Calc.Formula1.AstaEqual: return(new ValData((object)(flag2 | flag1))); case Calc.Formula1.SlashEqual: return(new ValData((object)(flag2 & flag1))); } break; default: string str = a.ToString(); string oldValue = b.ToString(); if (numerical == Calc.Formula1.PlusEqual) { return(new ValData((object)(str + oldValue))); } if (numerical == Calc.Formula1.MinusEqual) { return(new ValData((object)str.Replace(oldValue, string.Empty))); } break; } Debug.LogError((object)(numerical.ToString() + a + b)); return(new ValData((object)null)); }