From 8361b018943b5296b4e270416311732efa27998f Mon Sep 17 00:00:00 2001 From: Mattuy Date: Tue, 18 Dec 2018 20:24:39 +0800 Subject: [PATCH] commonly commit --- Interact/AttrNames.cs | 1 + Interact/Handle.cs | 28 +++++++++++++++++++--------- Interact/Message.cs | 14 ++++++++++++-- Interact/User.cs | 3 ++- 4 files changed, 34 insertions(+), 12 deletions(-) diff --git a/Interact/AttrNames.cs b/Interact/AttrNames.cs index 1d9fa81..e910385 100644 --- a/Interact/AttrNames.cs +++ b/Interact/AttrNames.cs @@ -20,5 +20,6 @@ namespace Interact public const string NickName = "NickName"; public const string Motto = "Motto"; public const string UGroup = "UGroup"; + public const string Photo = "Photo"; } } diff --git a/Interact/Handle.cs b/Interact/Handle.cs index c739383..6990bb7 100644 --- a/Interact/Handle.cs +++ b/Interact/Handle.cs @@ -4,6 +4,8 @@ using System.Linq; using System.Text; using Newtonsoft.Json; using Newtonsoft.Json.Linq; +using System.Drawing; +using System.IO; //StormClient对数据的处理相关内容 @@ -33,7 +35,7 @@ namespace Interact switch (jsonObj[AttrNames.Operation].ToString()) { case Operations.Login: - HandleLoginResult(GetResultHead(jsonObj), data); + HandleLoginResult(jsonObj, data); break; case Operations.Panic: HandlePanic(GetResultHead(jsonObj)); @@ -68,23 +70,31 @@ namespace Interact } //处理登录反馈消息 - private static void HandleLoginResult(ResultHead head, byte[] data) + private static void HandleLoginResult(JObject head, byte[] data) { + //提取结果包头 + ResultHead resultHead = GetResultHead(head); //发起登录完成事件 - if (head.Error != "") + if (head[AttrNames.Error].ToString() != "") { - OnLoginDone?.Invoke(head, null); + OnLoginDone?.Invoke(resultHead, null); return; } JObject dataObj = (JObject)JsonConvert.DeserializeObject(Encoding.UTF8.GetString(data)); User user = new User { - Name = dataObj[AttrNames.User].ToString(), - NickName = dataObj[AttrNames.NickName].ToString(), - Motto = dataObj[AttrNames.Motto].ToString(), - Group = (UserGroup)Enum.Parse(typeof(UserGroup), dataObj[AttrNames.UGroup].ToString()) + Name = head[AttrNames.User].ToString(), + NickName = head[AttrNames.NickName].ToString(), + Motto = head[AttrNames.Motto].ToString(), + Group = (UserGroup)Enum.Parse(typeof(UserGroup), dataObj[AttrNames.UGroup].ToString()), + Photo = User.DefaultPhoto }; - OnLoginDone?.Invoke(head, user); + if (int.Parse(head[AttrNames.Photo].ToString()) > 0) + { + MemoryStream ms = new MemoryStream(data); + user.Photo = Image.FromStream(ms); + } //用户头像数据 + OnLoginDone?.Invoke(resultHead, user); } #endregion diff --git a/Interact/Message.cs b/Interact/Message.cs index 5afcecc..dce3d1e 100644 --- a/Interact/Message.cs +++ b/Interact/Message.cs @@ -9,13 +9,23 @@ namespace Interact //定义一则用户接收到的消息 public class Message { + public Message() { } + public Message(string text, User Receiver) + { + When = DateTime.Now; + From = User.Me; + To = Receiver; + Text = text; + } + /*保留 public const UInt32 MaxHeadLength = 4096; //最大包头长度 public const UInt32 MaxMessageLength = 0x6400000; //最大数据长度 */ public DateTime When { get; } //服务器接收时间 - public User From; //发送者 - public string Content; //消息内容 + public User From; //消息发送者 + public User To; //消息接收者 + public string Text; //消息内容 //将消息保存到数据库(保留) protected bool Save() { return false; } diff --git a/Interact/User.cs b/Interact/User.cs index 0a94d81..36980f3 100644 --- a/Interact/User.cs +++ b/Interact/User.cs @@ -10,7 +10,8 @@ namespace Interact //用户 public class User { - public static User Me; //当前用户 + public static User Me; //当前用户 + public static Image DefaultPhoto; //默认头像 public string Name; //用户名 public string NickName; //昵称