Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }