public void Handle(DirectMessageReceived message) { var link = this.directMessageGroup.Links.OfType <DirectMessageLink>().FirstOrDefault(l => l.Username == message.From); if (link == null) { String uri = String.Format("/directmessage?username={0}", message.From); link = new DirectMessageLink { Username = message.From, Source = new Uri(uri, UriKind.RelativeOrAbsolute) }; this.directMessageGroup.Links.Add(link); } }
internal void RaiseDirectMessage(DirectMessageMessage msg) { if (DirectMessageReceived == null) { return; } var s = DirectMessageReceived.GetInvocationList().Select(p => p as Action <DirectMessageMessage>); foreach (var i in s.Where(p => p != null)) { try { i(msg); } catch (Exception e) { Instance.LogError("ダイレクトメッセージ受信時イベントでエラーが発生しました\n" + e.Message); Instance.SaveLog(); } } }
public void HandleChatMessage(NetworkMessage msg) { MsgMessage t = msg as MsgMessage; ChatMessage chat = new ChatMessage(); chat.From = t.From; chat.To = t.To; chat.IsAction = t.MessageType == MsgMessage.MessageTypes.ActionMessage; chat.Message = t.MessageText; GlobalChatLog.Add(chat); if (!UserLogs.ContainsKey(chat.From)) { UserLogs.Add(chat.From, new UserChatLog()); } UserLogs[chat.From].Messages.Add(chat); ChatMessageEventArgs args = new ChatMessageEventArgs(chat); if (chat.To == LocalPlayerID && DirectMessageReceived != null) { DirectMessageReceived.Invoke(this, args); } if (chat.To == LocalTeam && TeamMessageReceived != null) { TeamMessageReceived.Invoke(this, args); } if (ChatMessageReceived != null) { ChatMessageReceived.Invoke(this, args); } }