public void Read(XmlTextReader reader, Thinker thinker)
        {
            bool done = false;

            while (!done)
            {
                reader.Read();

                if (reader.NodeType == XmlNodeType.EndElement &&
                    reader.Name == "Expression")
                {
                    done = true;
                }
                // Process a start of element node.
                else if (reader.NodeType == XmlNodeType.Element)
                {
                    // Process a text node.
                    if (reader.Name == "Logic")
                    {
                        Logic logic = new Logic();
                        logic.Read(reader, thinker);
                        m_logic_list.Add(logic);
                    }
                    else if (reader.Name == "AndValues")
                    {
                        while (reader.NodeType != XmlNodeType.Text)
                        {
                            reader.Read();
                        }
                        m_and_values = bool.Parse(reader.Value);
                    }
                }
            }            // End while loop
        }
 public void DoActions(Thinker thinker)
 {
     foreach (Thinker.ActionMethod act in m_actions)
     {
         act(thinker);
     }
 }
 public void WriteFullState(XmlTextWriter writer, Thinker thinker)
 {
     writer.WriteStartElement("StateDefinition");
     writer.WriteElementString("name", m_name);
     foreach (Transitioner trans in m_transition_list)
     {
         trans.Write(writer);
     }
     foreach (Thinker.ActionMethod act in m_actions)
     {
         writer.WriteStartElement("StateAction");
         writer.WriteElementString("name", Thinker.GetActionName(act));
         writer.WriteEndElement();
     }
     writer.WriteEndElement();
 }
        public void Read(XmlTextReader reader, Thinker thinker)
        {
            bool         done  = false;
            Transitioner trans = null;
            Expression   exp   = null;

            while (!done)
            {
                reader.Read();

                if (reader.NodeType == XmlNodeType.EndElement &&
                    reader.Name == "StateDefinition")
                {
                    done = true;
                }
                // Process a start of element node.
                else if (reader.NodeType == XmlNodeType.Element)
                {
                    // Process a text node.
                    if (reader.Name == "Target")
                    {
                        while (reader.NodeType != XmlNodeType.Text)
                        {
                            reader.Read();
                        }
                        AIState state = thinker.GetState(reader.Value);
                        exp   = new Expression();
                        trans = new Transitioner(exp, state);
                        AddTransitioner(trans);
                        trans.Read(reader, thinker);
                    }
                    if (reader.Name == "StateAction")
                    {
                        while (reader.NodeType != XmlNodeType.Text)
                        {
                            reader.Read();
                        }
                        Thinker.ActionMethod method = Thinker.GetAction(reader.Value);
                        m_actions.Add(method);
                    }
                }
            }            // End while loop
        }
コード例 #5
0
        public void Read(XmlTextReader reader, Thinker thinker)
        {
            bool done = false;

            while (!done)
            {
                reader.Read();

                if (reader.NodeType == XmlNodeType.EndElement &&
                    reader.Name == "Transitioner")
                {
                    done = true;
                }
                // Process a start of element node.
                else if (reader.NodeType == XmlNodeType.Element)
                {
                    // Process a text node.
                    if (reader.Name == "Expression")
                    {
                        m_expression.Read(reader, thinker);
                    }
                }
            }            // End while loop
        }
コード例 #6
0
        public void Read(XmlTextReader reader, Thinker thinker)
        {
            bool done = false;

            while (!done)
            {
                reader.Read();

                if (reader.NodeType == XmlNodeType.EndElement &&
                    reader.Name == "Logic")
                {
                    done = true;
                }
                // Process a start of element node.
                else if (reader.NodeType == XmlNodeType.Element)
                {
                    // Process a text node.
                    if (reader.Name == "Fact1")
                    {
                        while (reader.NodeType != XmlNodeType.Text)
                        {
                            reader.Read();
                        }
                        m_first = thinker.GetFact(reader.Value);
                    }
                    if (reader.Name == "Fact2")
                    {
                        while (reader.NodeType != XmlNodeType.Text)
                        {
                            reader.Read();
                        }
                        m_second = thinker.GetFact(reader.Value);
                    }
                    if (reader.Name == "Operator")
                    {
                        while (reader.NodeType != XmlNodeType.Text)
                        {
                            reader.Read();
                        }
                        switch (reader.Value)
                        {
                        case "And":
                            m_operator = Operator.And;
                            break;

                        case "Equals":
                            m_operator = Operator.Equals;
                            break;

                        case "GreaterThan":
                            m_operator = Operator.GreaterThan;
                            break;

                        case "GreaterThanEquals":
                            m_operator = Operator.GreaterThanEquals;
                            break;

                        case "LessThan":
                            m_operator = Operator.LessThan;
                            break;

                        case "LessThanEquals":
                            m_operator = Operator.LessThanEquals;
                            break;

                        case "NotEqual":
                            m_operator = Operator.NotEqual;
                            break;

                        case "Or":
                            m_operator = Operator.Or;
                            break;

                        case "True":
                            m_operator = Operator.True;
                            break;

                        case "False":
                            m_operator = Operator.False;
                            break;
                        }
                    }
                }
            }            // End while loop
        }