oldschool-toontown/otp/distributed/OTPInternalRepository.py
2020-01-02 22:02:07 -05:00

43 lines
1.7 KiB
Python

from direct.directnotify import DirectNotifyGlobal
from direct.distributed.AstronInternalRepository import AstronInternalRepository
from direct.distributed.PyDatagram import *
# TODO: Remove Astron dependence.
class OTPInternalRepository(AstronInternalRepository):
notify = DirectNotifyGlobal.directNotify.newCategory('OTPInternalRepository')
dbId = 4003
def __init__(self, baseChannel, serverId, dcFileNames, dcSuffix, connectMethod, threadedNet):
AstronInternalRepository.__init__(self, baseChannel, serverId=serverId, dcFileNames=dcFileNames,
dcSuffix=dcSuffix, connectMethod=connectMethod, threadedNet=threadedNet)
def handleConnected(self):
AstronInternalRepository.handleConnected(self)
def getAccountIdFromSender(self):
return (self.getMsgSender() >> 32) & 0xFFFFFFFF
def getAvatarIdFromSender(self):
return self.getMsgSender() & 0xFFFFFFFF
def sendSetZone(self, distObj, zoneId):
distObj.setLocation(distObj.parentId, zoneId)
self.sendSetLocation(distObj, distObj.parentId, zoneId)
def setAllowClientSend(self, avId, distObj, fieldNameList=[]):
dg = PyDatagram()
dg.addServerHeader(distObj.GetPuppetConnectionChannel(avId), self.ourChannel, CLIENTAGENT_SET_FIELDS_SENDABLE)
fieldIds = []
for fieldName in fieldNameList:
field = distObj.dclass.getFieldByName(fieldName)
if field:
fieldIds.append(field.getNumber())
dg.addUint32(distObj.getDoId())
dg.addUint16(len(fieldIds))
for fieldId in fieldIds:
dg.addUint16(fieldId)
self.send(dg)