mirror of
https://github.com/Sneed-Group/Poodletooth-iLand
synced 2024-12-24 20:22:33 -06:00
35 lines
1.2 KiB
Python
35 lines
1.2 KiB
Python
|
from direct.directnotify import DirectNotifyGlobal
|
||
|
from direct.distributed.PyDatagram import PyDatagram
|
||
|
import cPickle, zlib
|
||
|
|
||
|
class ToontownNetMessengerAI:
|
||
|
"""
|
||
|
This works very much like the NetMessenger class except that
|
||
|
this is much simpler and makes much more sense.
|
||
|
"""
|
||
|
notify = DirectNotifyGlobal.directNotify.newCategory('ToontownNetMessengerAI')
|
||
|
|
||
|
def __init__(self, air, msgChannel=40000, msgType=54321):
|
||
|
self.air = air
|
||
|
self.air.registerForChannel(msgChannel)
|
||
|
self.msgChannel = msgChannel
|
||
|
self.msgType = msgType
|
||
|
|
||
|
def prepare(self, message, sentArgs=[]):
|
||
|
dg = PyDatagram()
|
||
|
dg.addServerHeader(self.msgChannel, self.air.ourChannel, self.msgType)
|
||
|
dg.addString(message)
|
||
|
dg.addString(zlib.compress(cPickle.dumps(sentArgs)))
|
||
|
return dg
|
||
|
|
||
|
def send(self, message, sentArgs=[]):
|
||
|
self.notify.debug('sendNetEvent: %s %r' % (message, sentArgs))
|
||
|
dg = self.prepare(message, sentArgs)
|
||
|
self.air.send(dg)
|
||
|
|
||
|
def handle(self, msgType, di):
|
||
|
message = di.getString()
|
||
|
data = zlib.decompress(di.getString())
|
||
|
sentArgs = cPickle.loads(data)
|
||
|
messenger.send(message, sentArgs)
|
||
|
|