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)