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 }
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 }
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 }