From 5c9adca456ee9609eec32f8db9fd8675afb96c4b Mon Sep 17 00:00:00 2001 From: John Cote Date: Wed, 14 Jul 2021 00:01:17 -0400 Subject: [PATCH] friends: Handle adding friends who are offline --- otp/friends/FriendManagerAI.py | 42 ++++++++++++++++++++++++++++++---- 1 file changed, 38 insertions(+), 4 deletions(-) diff --git a/otp/friends/FriendManagerAI.py b/otp/friends/FriendManagerAI.py index 4a9d52f..fe4f2ba 100644 --- a/otp/friends/FriendManagerAI.py +++ b/otp/friends/FriendManagerAI.py @@ -326,8 +326,25 @@ class FriendManagerAI(DistributedObjectGlobalAI): avatarAFriendsList.append(avatarANewFriend) avatarA.d_setFriendsList(avatarAFriendsList) else: - # TODO - pass + def handleAvatarA(dclass, fields): + if dclass != self.air.dclassesByName['DistributedToonAI']: + return + + avatarAFriendsList = fields['setFriendsList'][0] + if len(avatarAFriendsList) >= OTPGlobals.MaxFriends: + self.makeFriendsReply(0, context) + return + + avatarANewFriend = (avatarBId, flags) + if avatarANewFriend in avatarAFriendsList: + self.makeFriendsReply(0, context) + return + + avatarAFriendsList.append(avatarANewFriend) + self.air.dbInterface.updateObject(self.air.dbId, avatarAId, self.air.dclassesByName['DistributedToonAI'], + {'setFriendsList': [avatarAFriendsList]}) + + self.air.dbInterface.queryObject(self.air.dbId, avatarAId, handleAvatarA) if avatarB: avatarBFriendsList = avatarB.getFriendsList() @@ -343,8 +360,25 @@ class FriendManagerAI(DistributedObjectGlobalAI): avatarBFriendsList.append(avatarBNewFriend) avatarB.d_setFriendsList(avatarBFriendsList) else: - # TODO - pass + def handleAvatarB(dclass, fields): + if dclass != self.air.dclassesByName['DistributedToonAI']: + return + + avatarBFriendsList = fields['setFriendsList'][0] + if len(avatarBFriendsList) >= OTPGlobals.MaxFriends: + self.makeFriendsReply(0, context) + return + + avatarBNewFriend = (avatarAId, flags) + if avatarBNewFriend in avatarBFriendsList: + self.makeFriendsReply(0, context) + return + + avatarBFriendsList.append(avatarBNewFriend) + self.air.dbInterface.updateObject(self.air.dbId, avatarBId, self.air.dclassesByName['DistributedToonAI'], + {'setFriendsList': [avatarBFriendsList]}) + + self.air.dbInterface.queryObject(self.air.dbId, avatarBId, handleAvatarB) self.makeFriendsReply(1, context)