internal void ProcessLoginA4Reply(LoginA4ReplyPacket loginA4ReplyPacket, LoginA4Packet loginA4Packet) { QQEventArgs <LoginA4ReplyPacket, LoginA4Packet> e = new QQEventArgs <LoginA4ReplyPacket, LoginA4Packet>(QQClient, loginA4ReplyPacket, loginA4Packet); OutPacket outPacket = new LoginGetListPacket(this.QQClient); QQClient.PacketManager.SendPacketAnyway(outPacket, QQPort.Main.Name); }
/// <summary> /// 登陆下载QQ列表 /// </summary> /// <param name="pos"></param> private void LoginGetList(int pos) { this.QQClient.LoginStatus = LoginStatus.GetList; LoginGetListPacket outPacket = new LoginGetListPacket(this.QQClient); outPacket.Pos = (ushort)pos; QQClient.PacketManager.SendPacketAnyway(outPacket, QQPort.Main.Name); }
internal void ProcessLoginGetListReply(LoginGetListReplyPacket loginGetListReplyPacket, LoginGetListPacket loginGetListPacket) { QQEventArgs <LoginGetListReplyPacket, LoginGetListPacket> e = new QQEventArgs <LoginGetListReplyPacket, LoginGetListPacket>(QQClient, loginGetListReplyPacket, loginGetListPacket); foreach (QQ.Entities.QQBasicInfo qq in loginGetListReplyPacket.QQList) { if (!QQClient.QQUser.QQList.ContainsKey(qq.QQ)) { QQClient.QQUser.QQList.Add(qq.QQ, qq); } } StringBuilder sb = new StringBuilder(); sb.AppendLine("本次得到QQ " + loginGetListReplyPacket.QQList.Count + " 个。"); #if DEBUG foreach (QQ.Entities.QQBasicInfo qq in loginGetListReplyPacket.QQList) { sb.AppendLine(string.Format("\t\tQQ:{0} type:{1} group: {2} ", qq.QQ, qq.Type, qq.GroupId)); } #endif QQClient.LogManager.Log(sb.ToString()); //应该将QQ好友,QQ群存入存入QQuser对象 if (!e.InPacket.Finished)//好友没有下载完,继续下载 { //LoginGetList(e.InPacket.NextPos); LoginGetList(++lisPackets); } else //好友下载完毕 触发事件 { QQClient.LogManager.Log("获取全部好友完成!"); //分到各自的列表组 foreach (QQBasicInfo qq in QQClient.QQUser.QQList.Values) { switch (qq.Type) { case QQType.Cluster: ClusterInfo ClusterInfo = new ClusterInfo(); ClusterInfo.QQBasicInfo = qq; QQClient.QQUser.ClusterList.Add(qq.QQ, ClusterInfo); break; case QQType.QQ: QQFriend QQFriend = new QQFriend(); QQFriend.QQBasicInfo = qq; QQClient.QQUser.Friends.Add(qq.QQ, QQFriend); break; default: QQClient.LogManager.Log("unknown QQ.Type: 0x" + qq.Type.ToString("X") + " qq=" + qq.QQ.ToString() + " gid=0x" + qq.GroupId.ToString("X2")); break; } } OutPacket outPacket = new LoginSendInfoPacket(this.QQClient); QQClient.PacketManager.SendPacketAnyway(outPacket, QQPort.Main.Name); } }