コード例 #1
0
		/// <summary>
		/// Sends a message from one entity to another
		/// </summary>
		/// <param name="senderID">The sender ID</param>
		/// <param name="recieverID">The reciever ID</param>
		/// <param name="delayTime">The delay time of the message in ticks</param>
		/// <param name="type">The message type</param>
		/// <param name="extraInfo">Extra info for the message</param>
		public void SendMessage(int senderID, int recieverID, double delayTime, MessageType type, object extraInfo)
		{
			Message message;
			IMessageable entity;

			message = new Message(senderID, recieverID, type, delayTime, extraInfo);

			//If the message has no delay then call the delegate handler
			if (delayTime == 0)
			{
				//Test if the entity can handle the message
				entity = EntityManager.Instance[recieverID] as IMessageable;
				if (entity == null)
					return;

				entity.HandleMessage(message);
			}

				//If the message was a delayed one, calculate its future time and put it in the message queue
			else
			{
				message.dispatchTime = System.DateTime.Now.Ticks + delayTime;
				messageQueue.Enqueue(message);
			}
		}
コード例 #2
0
		/// <summary>
		/// Sends a message from one entity to another
		/// </summary>
		/// <param name="senderID">The sender ID</param>
		/// <param name="recieverID">The reciever ID</param>
		/// <param name="delayTime">The delay time of the message in ticks</param>
		/// <param name="type">The message type</param>
		/// <param name="extraInfo">Extra info for the message</param>
		public void SendMessage(int senderID, int recieverID, double delayTime, MessageType type, object extraInfo)
		{
			Message message;

			message = new Message(senderID, recieverID, type, delayTime, extraInfo);

			//If the message has no delay then call the delegate handler
			if (delayTime == 0)
			{
				if (registeredEntities[type] == null)
					return;

				if (registeredEntities[type][recieverID] == null)
					return;

				registeredEntities[type][recieverID](message);
			}

				//If the messaged was a delayed one, calculate its future time and put it in the message queue
			else
			{
				message.dispatchTime = System.DateTime.Now.Ticks + delayTime;
				messageQueue.Enqueue(message);
			}
		}