示例#1
0
		public LuaObject Receive(IMessageQueue queue, int position)
		{
			var messageId = queue.ReadInt32(position);
			var message = this.registry.GetDefinition(messageId);
			Dictionary<LuaObject, LuaObject> table = new Dictionary<LuaObject, LuaObject>();
			foreach (var property in message.Properties)
			{
				var key = LuaObject.FromString(property.Name);
				switch (property.PropertyType)
				{
					case PropertyTypes.Int32:
						table[key] = LuaObject.FromNumber(queue.ReadInt32(position + property.Offset));
						break;
					case PropertyTypes.Single:
						table[key] = LuaObject.FromNumber(queue.ReadFloat(position + property.Offset));
						break;
					case PropertyTypes.String:
						table[key] =
							LuaObject.FromString(
								ExtensionMethods.ReadStringContent(queue, position + queue.ReadInt32(position + property.Offset)));
						break;
					default:
						throw new NotImplementedException();
				}
			}
			return LuaObject.FromTable(table);
		}
示例#2
0
		private void TestFloat(IMessageQueue q, int pos, float value)
		{
			q.WriteFloat(pos, value);
			Assert.AreEqual(value, q.ReadFloat(pos));
		}