コード例 #1
0
    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);
        }
    }