transitioner.cs

来自「Introduction to 3d game engine design一书的」· CS 代码 · 共 75 行

CS
75
字号
using System;
using System.Xml;

namespace GameAI
{
	/// <summary>
	/// Summary description for Transitioner.
	/// </summary>
	public class Transitioner
	{
		#region Attributes
		private Expression m_expression = null;
		private AIState    m_target_state;
		#endregion

		#region Properties
		#endregion

		public Transitioner(Expression expression, AIState target_state)
		{
			m_expression = expression;
			m_target_state = target_state;
		}

		public AIState Evaluate( AIState old_state )
		{
			AIState new_state = old_state;

			if ( m_expression != null )
			{
				if ( m_expression.Evaluate() )
				{
					new_state = m_target_state;
				}
			}

			return new_state;
		}


		public void Write( XmlTextWriter writer )
		{
			writer.WriteStartElement("Transitioner");
			writer.WriteElementString("Target", m_target_state.Name);
			m_expression.Write( writer );
			writer.WriteEndElement();
		}

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

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?