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); }
private void TestFloat(IMessageQueue q, int pos, float value) { q.WriteFloat(pos, value); Assert.AreEqual(value, q.ReadFloat(pos)); }