1
2
3
4 import struct
5 from struct import unpack_from, pack
6
7 from lacewing.moo.packetloaders.server import *
8 from lacewing.moo.packetloaders.client import *
9
10 from lacewing.moo.packetloaders.common import OutOfData
11
12 csTypes = {
13 1 : ToChannelMessage,
14 2 : ClientMessage,
15 3 : PrivateMessage,
16 4 : JoinChannel,
17 5 : LeaveChannel,
18 11 : ChangeName,
19 12 : SetName,
20
21 }
22
23 scTypes = {
24 1 : FromChannelMessage,
25 5 : PlayerLeft,
26 6 : PlayerJoined,
27 7 : PlayerExists,
28 8 : ChannelJoined,
29 10 : MOTD,
30 11 : PlayerChanged,
31 12 : AssignedID,
32 }
33
35 loader = None
36
38 self.settings = settings
39
40 - def load(self, data):
41 try:
42 packetId, = unpack_from('<B', data)
43 except struct.error:
44 raise OutOfData
45 loader = self._loaderDict[packetId](**self.settings)
46 self.loader = loader
47 return loader.load(data[1:]) + 1
48
50 packetId = [k for (k, v) in self._loaderDict.iteritems()
51 if isinstance(self.loader, v)][0]
52 return pack('<B', packetId) + self.loader.generate()
53
56
59