public object Execute(LogicEntityObject logicEntityObject, object[] parameterValues) { if (logicEntityObject == null) { Log.Fatal("LogicDesignedMethod: logicEntityObject = null"); return(null); } LogicExecuteMethodInformation logicExecuteMethodInformation; if (logicEntityObject.GetCurrentExecutingMethodInformations() != null && logicEntityObject.GetCurrentExecutingMethodLevel() + 1 < logicEntityObject.GetCurrentExecutingMethodInformations().Count) { logicExecuteMethodInformation = logicEntityObject.GetCurrentExecutingMethodInformations()[logicEntityObject.GetCurrentExecutingMethodLevel() + 1]; } else { logicExecuteMethodInformation = new LogicExecuteMethodInformation(this, logicEntityObject); if (!this.A(logicExecuteMethodInformation, parameterValues)) { return(null); } } object result; if (logicEntityObject.GetCurrentExecutingMethodInformations() == null) { logicEntityObject.SetCurrentExecutingMethodInformations(new List <LogicExecuteMethodInformation>()); result = this.A(logicExecuteMethodInformation); logicEntityObject.SetCurrentExecutingMethodInformations((List <LogicExecuteMethodInformation>)null); } else { result = this.A(logicExecuteMethodInformation); } return(result); }
internal object A(LogicExecuteMethodInformation logicExecuteMethodInformation) { LogicEntityObject logicEntityObject = logicExecuteMethodInformation.LogicEntityObject; bool flag = false; int num = 0; if (logicEntityObject != null) { LogicEntityObject expr_0F = logicEntityObject; expr_0F.SetCurrentExecutingMethodLevel(expr_0F.GetCurrentExecutingMethodLevel() + 1); if (logicEntityObject.GetCurrentExecutingMethodLevel() >= logicEntityObject.GetCurrentExecutingMethodInformations().Count) { logicEntityObject.GetCurrentExecutingMethodInformations().Add(logicExecuteMethodInformation); } else { if (logicEntityObject.GetCurrentExecutingMethodInformations()[logicEntityObject.GetCurrentExecutingMethodLevel()] != logicExecuteMethodInformation) { Log.Fatal("LogicDesignerMethod: Internal error: Execute: logicEntityObject.CurrentExecutingMethodInformations[logicEntityObject.CurrentExecutingMethodLevel] != executeMethodInformation"); } flag = true; num = logicExecuteMethodInformation.CallActionsLevelIndexes[logicExecuteMethodInformation.CurrentClassActionsLevelIndex]; } } object result = null; for (int i = num; i < this.actions.Count; i++) { LogicAction logicAction = this.actions[i]; if (!flag) { logicExecuteMethodInformation.PushCallActionsLevelIndex(i); } flag = false; logicExecuteMethodInformation.CurrentClassActionsLevelIndex++; object obj = logicAction.Execute(logicExecuteMethodInformation); logicExecuteMethodInformation.CurrentClassActionsLevelIndex--; if (logicExecuteMethodInformation.NeedReturnForWait) { if (logicEntityObject != null) { LogicEntityObject expr_C7 = logicEntityObject; expr_C7.SetCurrentExecutingMethodLevel(expr_C7.GetCurrentExecutingMethodLevel() - 1); } return(null); } logicExecuteMethodInformation.PopCallActionsLevelIndex(); if (LogicUtils.A() != 0f) { logicExecuteMethodInformation.PushCallActionsLevelIndex(i + 1); if (logicExecuteMethodInformation.LogicEntityObject != null) { logicExecuteMethodInformation.LogicEntityObject.CreateWaitingThreadItem(LogicUtils.a(), LogicUtils.A()); } LogicUtils.A(0f); LogicUtils.A(""); if (logicEntityObject != null) { LogicEntityObject expr_128 = logicEntityObject; expr_128.SetCurrentExecutingMethodLevel(expr_128.GetCurrentExecutingMethodLevel() - 1); } return(null); } if (logicExecuteMethodInformation.NeedReturn) { result = obj; break; } } if (logicExecuteMethodInformation.LogicEntityObject != null) { logicExecuteMethodInformation.LogicEntityObject.GetCurrentExecutingMethodInformations().RemoveAt(logicExecuteMethodInformation.LogicEntityObject.GetCurrentExecutingMethodInformations().Count - 1); } if (logicEntityObject != null) { LogicEntityObject expr_18A = logicEntityObject; expr_18A.SetCurrentExecutingMethodLevel(expr_18A.GetCurrentExecutingMethodLevel() - 1); } return(result); }