1function InputMessage:getData()
2 local dataType = self:getU8()
3 if dataType == NetworkMessageTypes.Boolean then
4 return numbertoboolean(self:getU8())
5 elseif dataType == NetworkMessageTypes.U8 then
6 return self:getU8()
7 elseif dataType == NetworkMessageTypes.U16 then
8 return self:getU16()
9 elseif dataType == NetworkMessageTypes.U32 then
10 return self:getU32()
11 elseif dataType == NetworkMessageTypes.U64 then
12 return self:getU64()
13 elseif dataType == NetworkMessageTypes.NumberString then
14 return tonumber(self:getString())
15 elseif dataType == NetworkMessageTypes.String then
16 return self:getString()
17 elseif dataType == NetworkMessageTypes.Table then
18 return self:getTable()
19 else
20 perror('Unknown data type ' .. dataType)
21 end
22 return nil
23end
24
25function InputMessage:getTable()
26 local ret = {}
27 local size = self:getU16()
28 for i=1,size do
29 local index = self:getData()
30 local value = self:getData()
31 ret[index] = value
32 end
33 return ret
34end
35
36function InputMessage:getColor()
37 local color = {}
38 color.r = self:getU8()
39 color.g = self:getU8()
40 color.b = self:getU8()
41 color.a = self:getU8()
42 return color
43end
44
45function InputMessage:getPosition()
46 local position = {}
47 position.x = self:getU16()
48 position.y = self:getU16()
49 position.z = self:getU8()
50 return position
51end
52