From 6a72e2cf0cf64310c918cd8e5b30edfd6f6e1da5 Mon Sep 17 00:00:00 2001 From: John Cote Date: Tue, 13 Jul 2021 21:30:44 -0400 Subject: [PATCH] friends: More progress on adding friends --- otp/friends/FriendManagerAI.py | 36 ++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/otp/friends/FriendManagerAI.py b/otp/friends/FriendManagerAI.py index cafa4f0..a22a23c 100644 --- a/otp/friends/FriendManagerAI.py +++ b/otp/friends/FriendManagerAI.py @@ -1,5 +1,6 @@ from direct.directnotify import DirectNotifyGlobal from direct.distributed.DistributedObjectGlobalAI import DistributedObjectGlobalAI +from direct.distributed.PyDatagram import * class FriendManagerAI(DistributedObjectGlobalAI): @@ -291,8 +292,39 @@ class FriendManagerAI(DistributedObjectGlobalAI): # The reply will clear the context out when it comes in. def __handleMakeFriends(self, avatarAId, avatarBId, flags, context): - # TODO - self.makeFriendsReply(1, context) + # And now the magic begins. + if avatarAId == avatarBId: + self.makeFriendsReply(0, context) + return + + avatarA = self.air.doId2do.get(avatarAId) # invitee + avatarB = self.air.doId2do.get(avatarBId) # inviter + if avatarA and avatarB: + datagram = PyDatagram() + datagram.addServerHeader(self.GetPuppetConnectionChannel(avatarA.getDoId()), self.air.ourChannel, + CLIENTAGENT_DECLARE_OBJECT) + datagram.addUint32(avatarB.getDoId()) + datagram.addUint16(self.air.dclassesByName['DistributedToonAI'].getNumber()) + self.air.send(datagram) + + datagram = PyDatagram() + datagram.addServerHeader(self.GetPuppetConnectionChannel(avatarB.getDoId()), self.air.ourChannel, + CLIENTAGENT_DECLARE_OBJECT) + datagram.addUint32(avatarA.getDoId()) + datagram.addUint16(self.air.dclassesByName['DistributedToonAI'].getNumber()) + self.air.send(datagram) + + avatarAFriendsList = avatarA.getFriendsList() + avatarAFriendsList.append((avatarB.getDoId(), 0)) + avatarA.d_setFriendsList(avatarAFriendsList) + + avatarBFriendsList = avatarB.getFriendsList() + avatarBFriendsList.append((avatarA.getDoId(), 0)) + avatarB.d_setFriendsList(avatarBFriendsList) + + self.makeFriendsReply(1, context) + + self.makeFriendsReply(0, context) def __previousResponse(self, inviteeId, inviterId): # Return the previous rejection code if this invitee has