public BnetFriendChangelist CreateChangelist() { BnetFriendChangelist changelist = new BnetFriendChangelist(); for (int i = this.m_friends.Count - 1; i >= 0; i--) { BnetPlayer friend = this.m_friends[i]; if (friend.IsDisplayable()) { changelist.AddAddedFriend(friend); this.m_friends.RemoveAt(i); } } return(changelist); }
private void OnFriendsUpdate(BattleNet.FriendsUpdate[] updates) { BnetFriendChangelist changelist = new BnetFriendChangelist(); foreach (BattleNet.FriendsUpdate update in updates) { switch (((BattleNet.FriendsUpdate.Action)update.action)) { case BattleNet.FriendsUpdate.Action.FRIEND_REMOVED: { BnetAccountId id2 = BnetAccountId.CreateFromBnetEntityId(update.entity1); BnetPlayer item = BnetPresenceMgr.Get().GetPlayer(id2); this.m_friends.Remove(item); changelist.AddRemovedFriend(item); this.RemovePendingFriend(item); break; } case BattleNet.FriendsUpdate.Action.FRIEND_INVITE: { BnetInvitation invitation = BnetInvitation.CreateFromFriendsUpdate(update); this.m_receivedInvites.Add(invitation); changelist.AddAddedReceivedInvite(invitation); break; } case BattleNet.FriendsUpdate.Action.FRIEND_INVITE_REMOVED: { BnetInvitation invitation2 = BnetInvitation.CreateFromFriendsUpdate(update); this.m_receivedInvites.Remove(invitation2); changelist.AddRemovedReceivedInvite(invitation2); break; } case BattleNet.FriendsUpdate.Action.FRIEND_SENT_INVITE: { BnetInvitation invitation3 = BnetInvitation.CreateFromFriendsUpdate(update); this.m_sentInvites.Add(invitation3); changelist.AddAddedSentInvite(invitation3); break; } case BattleNet.FriendsUpdate.Action.FRIEND_SENT_INVITE_REMOVED: { BnetInvitation invitation4 = BnetInvitation.CreateFromFriendsUpdate(update); this.m_sentInvites.Remove(invitation4); changelist.AddRemovedSentInvite(invitation4); break; } case BattleNet.FriendsUpdate.Action.FRIEND_ADDED: { BnetAccountId id = BnetAccountId.CreateFromBnetEntityId(update.entity1); BnetPlayer player = BnetPresenceMgr.Get().RegisterPlayer(id); if (player.IsDisplayable()) { this.m_friends.Add(player); changelist.AddAddedFriend(player); } else { this.AddPendingFriend(player); } break; } } } if (!changelist.IsEmpty()) { this.FireChangeEvent(changelist); } }