Beispiel #1
0
        NodeBase CreateActionNode(XMLRules.ActionType action)
        {
            NodeBase result = null;

            if (action.HasChangeState())
            {
                NodeBase rhsNode = CreateArithmeticNode(action.GetChangeState().GetExpression());

                result = new SetNode(m_Container);
                ((SetNode)result).m_VariableName = action.GetChangeState().GetVariable().GetName().Value;
                result.AddChild(rhsNode);
            }
            else if (action.HasCallScript())
            {
                result = new CallNode(m_Container);

                string scriptName = action.GetCallScript().GetScriptName().Value;

                List <ScriptDescriptor> actionList = ScriptManager.GetScriptsByType(typeof(BaseAction));

                foreach (ScriptDescriptor script in actionList)
                {
                    if (scriptName == script.m_Type.ToString())
                    {
                        BaseScript newScript = null;
                        BaseScript.Load(action.GetCallScript(), m_Container.m_Editor.m_TargetObject, out newScript);

                        ((CallNode)result).m_Script = (BaseAction)newScript;
                        break;
                    }
                }
            }

            return(result);
        }
Beispiel #2
0
        public bool Validate()
        {
            bool validCondition = true;
            bool validAction    = true;

            if (m_Rule.HasCondition())
            {
                ValidateExpression(m_Rule.GetCondition(), out validCondition);
            }

            for (int i = 0; i < m_Rule.GetActionCount(); i++)
            {
                XMLRules.ActionType action = m_Rule.GetActionAt(i);
                if (action.HasChangeState())
                {
                    ValidateAssignmentExpression(action.GetChangeState(), out validAction);
                }
            }

            return(validCondition && validAction);
        }
Beispiel #3
0
        public void Execute()
        {
            m_HasFired = true;

            for (int i = 0; i < m_Rule.GetActionCount(); i++)
            {
                XMLRules.ActionType action = m_Rule.GetActionAt(i);

                if (action.HasChangeState())
                {
                    EvaluateAssignmentExpression(action.GetChangeState());
                }
                else
                {
                    foreach (BaseAction script in m_ScriptReferences)
                    {
                        script.Execute();
                    }
                }
            }
        }
Beispiel #4
0
        string GetActionString()
        {
            string retVal = "";

            for (int i = 0; i < m_Rule.GetActionCount(); i++)
            {
                XMLRules.ActionType action = m_Rule.GetActionAt(i);

                if (action.HasChangeState())
                {
                    retVal += GetAssignmentExpressionString(action.GetChangeState());
                    retVal += "\n";
                }
                else if (action.HasCallScript())
                {
                    retVal += "Call script: " + action.GetCallScript().GetScriptName();
                    retVal += "\n";
                }
            }

            return(retVal);
        }