friends: Current progress on friends list retrieval

This commit is contained in:
John Cote 2021-07-15 23:26:20 -04:00
parent 9e923db938
commit ca5db53eea
No known key found for this signature in database
GPG Key ID: E3442FF71E9C1C01
1 changed files with 72 additions and 1 deletions

View File

@ -2,8 +2,79 @@ from direct.directnotify import DirectNotifyGlobal
from direct.distributed.DistributedObjectGlobalUD import DistributedObjectGlobalUD
class FriendsOperation:
def __init__(self, friendsManager, sender):
self.friendsManager = friendsManager
self.sender = sender
def _handleDone(self):
# TODO
pass
def _handleError(self, error):
# TODO
pass
class FriendsListOperation(FriendsOperation):
def start(self):
self.friendsManager.air.dbInterface.queryObject(self.friendsManager.air.dbId, self.sender,
self.__handleSenderRetrieved)
def __handleSenderRetrieved(self, dclass, fields):
if dclass != self.friendsManager.air.dclassesByName['DistributedToonUD']:
self._handleError('Retrieved sender is not a DistributedToonUD!')
return
self.tempFriendsList = fields['setFriendsList'][0]
if len(self.tempFriendsList) <= 0:
self.__sendFriendsList([])
self._handleDone()
return
self.currentFriendIdx = 0
self.friendsList = []
self.friendsManager.air.dbInterface.queryObject(self.friendsManager.air.dbId, self.tempFriendsList[0][0],
self.__handleFriendRetrieved)
def __handleFriendRetrieved(self, dclass, fields):
if dclass != self.friendsManager.air.dclassesByName['DistributedToonUD']:
self._handleError('Retrieved friend is not a DistributedToonUD!')
return
friendId = self.tempFriendsList[self.currentFriendIdx][0]
self.friendsList.append([friendId, fields['setName'][0], fields['setDNAString'][0], fields['setPetId'][0]])
if len(self.friendsList) >= len(self.tempFriendsList):
self.__sendFriendsList(self.friendsList)
self._handleDone()
return
self.currentFriendIdx += 1
self.friendsManager.air.dbInterface.queryObject(self.friendsManager.air.dbId,
self.tempFriendsList[self.currentFriendIdx][0],
self.__handleFriendRetrieved)
def __sendFriendsList(self, friendsList):
self.friendsManager.notify.info('TODO: __sendFriendsList')
class ToontownFriendsManagerUD(DistributedObjectGlobalUD):
notify = DirectNotifyGlobal.directNotify.newCategory('ToontownFriendsManagerUD')
def __init__(self, air):
DistributedObjectGlobalUD.__init__(self, air)
self.operations = []
def runOperation(self, operationType, *args):
sender = self.air.getAvatarIdFromSender()
if not sender:
return
newOperation = operationType(self, sender)
self.operations.append(newOperation)
newOperation.start(*args)
def getFriendsListRequest(self):
self.notify.info('getFriendsListRequest TODO')
self.runOperation(FriendsListOperation)