예제 #1
0
        public ChannelAPI.ReceivedInvite[] GetReceivedInvites(ChannelAPI.InvitationServiceType serviceType)
        {
            List <ChannelAPI.ReceivedInvite> list;

            this.m_receivedInvitations.TryGetValue(serviceType, out list);
            return((list != null) ? list.ToArray() : new ChannelAPI.ReceivedInvite[0]);
        }
예제 #2
0
 public ChannelAPI.ReceivedInvite GetReceivedInvite(ChannelAPI.InvitationServiceType serviceType, ulong invitationId)
 {
     foreach (ChannelAPI.ReceivedInvite receivedInvite in this.GetReceivedInvites(serviceType))
     {
         if (receivedInvite.Invitation.Id == invitationId)
         {
             return(receivedInvite);
         }
     }
     return(null);
 }
예제 #3
0
 public ChannelAPI.ReceivedInvite GetReceivedInvite(ChannelAPI.InvitationServiceType serviceType, ulong invitationId)
 {
     ChannelAPI.ReceivedInvite[] receivedInvites = this.GetReceivedInvites(serviceType);
     for (int i = 0; i < receivedInvites.Length; i++)
     {
         ChannelAPI.ReceivedInvite receivedInvite = receivedInvites[i];
         if (receivedInvite.Invitation.Id == invitationId)
         {
             return(receivedInvite);
         }
     }
     return(null);
 }
예제 #4
0
        public void SendInvitation(EntityId channelId, EntityId entityId, ChannelAPI.InvitationServiceType serviceType, RPCContextDelegate callback)
        {
            SendInvitationRequest sendInvitationRequest = new SendInvitationRequest();

            sendInvitationRequest.SetTargetId(entityId);
            InvitationParams        invitationParams        = new InvitationParams();
            ChannelInvitationParams channelInvitationParams = new ChannelInvitationParams();

            channelInvitationParams.SetChannelId(channelId);
            channelInvitationParams.SetServiceType((uint)serviceType);
            invitationParams.SetChannelParams(channelInvitationParams);
            sendInvitationRequest.SetParams(invitationParams);
            this.m_rpcConnection.QueueRequest(ChannelAPI.m_channelInvitationService.Id, 3u, sendInvitationRequest, callback, 0u);
        }
예제 #5
0
        private void HandleChannelInvitation_NotifyReceivedInvitationAdded(RPCContext context)
        {
            base.ApiLog.LogDebug("HandleChannelInvitation_NotifyReceivedInvitationAdded");
            InvitationAddedNotification invitationAddedNotification = InvitationAddedNotification.ParseFrom(context.Payload);

            if (invitationAddedNotification.Invitation.HasChannelInvitation)
            {
                ChannelInvitation channelInvitation          = invitationAddedNotification.Invitation.ChannelInvitation;
                ChannelAPI.InvitationServiceType serviceType = (ChannelAPI.InvitationServiceType)channelInvitation.ServiceType;
                List <ChannelAPI.ReceivedInvite> list;
                if (!this.m_receivedInvitations.TryGetValue(serviceType, out list))
                {
                    list = new List <ChannelAPI.ReceivedInvite>();
                    this.m_receivedInvitations[serviceType] = list;
                }
                list.Add(new ChannelAPI.ReceivedInvite(channelInvitation, invitationAddedNotification.Invitation));
                if (serviceType == ChannelAPI.InvitationServiceType.INVITATION_SERVICE_TYPE_PARTY)
                {
                    this.m_battleNet.Party.ReceivedInvitationAdded(invitationAddedNotification, channelInvitation);
                }
            }
        }
예제 #6
0
        private void HandleChannelInvitation_NotifyReceivedInvitationRemoved(RPCContext context)
        {
            base.ApiLog.LogDebug("HandleChannelInvitation_NotifyReceivedInvitationRemoved");
            InvitationRemovedNotification invitationRemovedNotification = InvitationRemovedNotification.ParseFrom(context.Payload);

            if (invitationRemovedNotification.Invitation.HasChannelInvitation)
            {
                ChannelInvitation channelInvitation          = invitationRemovedNotification.Invitation.ChannelInvitation;
                ChannelAPI.InvitationServiceType serviceType = (ChannelAPI.InvitationServiceType)channelInvitation.ServiceType;
                ulong  id          = invitationRemovedNotification.Invitation.Id;
                string szPartyType = string.Empty;
                if (serviceType == ChannelAPI.InvitationServiceType.INVITATION_SERVICE_TYPE_PARTY)
                {
                    szPartyType = this.m_battleNet.Party.GetReceivedInvitationPartyType(id);
                }
                List <ChannelAPI.ReceivedInvite> list;
                if (this.m_receivedInvitations.TryGetValue(serviceType, out list))
                {
                    for (int i = 0; i < list.get_Count(); i++)
                    {
                        if (list.get_Item(i).Invitation.Id == id)
                        {
                            list.RemoveAt(i);
                            break;
                        }
                    }
                    if (list.get_Count() == 0)
                    {
                        this.m_receivedInvitations.Remove(serviceType);
                    }
                }
                ChannelAPI.InvitationServiceType invitationServiceType = serviceType;
                if (invitationServiceType == ChannelAPI.InvitationServiceType.INVITATION_SERVICE_TYPE_PARTY)
                {
                    this.m_battleNet.Party.ReceivedInvitationRemoved(szPartyType, invitationRemovedNotification, channelInvitation);
                }
            }
        }