From 427c93da468444a70c20e809bed335b5b408c341 Mon Sep 17 00:00:00 2001 From: John Cote Date: Sat, 30 Nov 2019 22:15:12 -0500 Subject: [PATCH] distributed: handleCloseShard astron support --- .../distributed/ToontownClientRepository.py | 53 +++++++++++++------ 1 file changed, 36 insertions(+), 17 deletions(-) diff --git a/toontown/distributed/ToontownClientRepository.py b/toontown/distributed/ToontownClientRepository.py index 3c374bd..845362f 100644 --- a/toontown/distributed/ToontownClientRepository.py +++ b/toontown/distributed/ToontownClientRepository.py @@ -612,23 +612,42 @@ class ToontownClientRepository(OTPClientRepository.OTPClientRepository): self.handler = self.handleCloseShard self._removeLocalAvFromStateServer() - def handleCloseShard(self, msgType, di): - if msgType == CLIENT_CREATE_OBJECT_REQUIRED: - di2 = PyDatagramIterator(di) - parentId = di2.getUint32() - if self._doIdIsOnCurrentShard(parentId): - return - elif msgType == CLIENT_CREATE_OBJECT_REQUIRED_OTHER: - di2 = PyDatagramIterator(di) - parentId = di2.getUint32() - if self._doIdIsOnCurrentShard(parentId): - return - elif msgType == CLIENT_OBJECT_UPDATE_FIELD: - di2 = PyDatagramIterator(di) - doId = di2.getUint32() - if self._doIdIsOnCurrentShard(doId): - return - self.handleMessageType(msgType, di) + if config.GetBool('astron-support', True): + def handleCloseShard(self, msgType, di): + if msgType == CLIENT_ENTER_OBJECT_REQUIRED: + di2 = PyDatagramIterator(di) + parentId = di2.getUint32() + if self._doIdIsOnCurrentShard(parentId): + return + elif msgType == CLIENT_ENTER_OBJECT_REQUIRED_OTHER: + di2 = PyDatagramIterator(di) + parentId = di2.getUint32() + if self._doIdIsOnCurrentShard(parentId): + return + elif msgType == CLIENT_OBJECT_SET_FIELD: + di2 = PyDatagramIterator(di) + doId = di2.getUint32() + if self._doIdIsOnCurrentShard(doId): + return + self.handleMessageType(msgType, di) + else: + def handleCloseShard(self, msgType, di): + if msgType == CLIENT_CREATE_OBJECT_REQUIRED: + di2 = PyDatagramIterator(di) + parentId = di2.getUint32() + if self._doIdIsOnCurrentShard(parentId): + return + elif msgType == CLIENT_CREATE_OBJECT_REQUIRED_OTHER: + di2 = PyDatagramIterator(di) + parentId = di2.getUint32() + if self._doIdIsOnCurrentShard(parentId): + return + elif msgType == CLIENT_OBJECT_UPDATE_FIELD: + di2 = PyDatagramIterator(di) + doId = di2.getUint32() + if self._doIdIsOnCurrentShard(doId): + return + self.handleMessageType(msgType, di) def _logFailedDisable(self, doId, ownerView): if doId not in self.doId2do and doId in self._deletedSubShardDoIds: